浅析Python数据处理


Posted in Python onMay 02, 2018

Numpy、Pandas是Python数据处理中经常用到的两个框架,都是采用C语言编写,所以运算速度快。Matplotlib是Python的的画图工具,可以把之前处理后的数据通过图像绘制出来。之前只是看过语法,没有系统学习总结过,本博文总结了这三个框架的API。

以下是这三个框架的的简单介绍和区别:

  • Numpy:经常用于数据生成和一些运算
  • Pandas:基于Numpy构建的,是Numpy的升级版本
  • Matplotlib:Python中强大的绘图工具

Numpy

Numpy快速入门教程可参考:Numpy tutorial

Numpy属性

ndarray.ndim:维度

ndarray.shape:行数和列数,例如(3, 5)

ndarray.size:元素的个数

ndarray.dtype:元素类型

Numpy创建

array(object, dtype=None):使用Python的list或者tuple创建数据

zeors(shape, dtype=float):创建全为0的数据

ones(shape, dtype=None):创建全为1的数据

empty(shape, dtype=float):创建没有初始化的数据

arange([start, ]stop, [step, ]dtype=None):创建固定间隔的数据段

linspace(start, stop, num=50, dtype=None):在给定的范围,均匀的创建数据

Numpy运算

加、减:a + b、a - b

乘:b*2、10*np.sin(a)

次方:b**2

判断:a<35,输出True或False的数组

矩阵乘:np.dot(A,B) 或 A.dot(B)

其他:+=、-+、sin、cos、exp

Numpy索引

数组索引方式:A[1, 1]

切片:A[1, 1:3]

迭代:for item in A.flat

Numpy其他

reshape(a, newshape):改变数据形状,不会对原始数据进行修改,返回一组新数据

resize(a, new_shape):改变数据形状,会对原始数据进行修改,不返回数据

ravel(a):将成一维返回

vstack(tup):上下合并

hstack(tup):左右合并

hsplit(ary, indices_or_sections):水平分割n份

vsplit(ary, indices_or_sections):垂直分割n份

copy(a):深度拷贝

Pandas

Pandas快速入门教程可参考:10 Minutes to pandas

Pandas数据结构

Pandas的数据结构有两种:Series和DataFrame。

Series:索引在左边,值在右边。创建方式如下:

In [4]: s = pd.Series([1,3,5,np.nan,6,8])
In [5]: s
Out[5]: 
0  1.0
1  3.0
2  5.0
3  NaN
4  6.0
5  8.0
dtype: float64

DataFrame:是一个表格型的数据结构,既有行索引也有列索引, 它可以被看做由Series组成的大字典。创建方式如下:

In [6]: dates = pd.date_range('20130101', periods=6)

In [7]: dates
Out[7]: 
DatetimeIndex(['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04',
        '2013-01-05', '2013-01-06'],
       dtype='datetime64[ns]', freq='D')

In [8]: df = pd.DataFrame(np.random.randn(6,4), index=dates, columns=list('ABCD'))

Pandas查看数据

index:索引

columns:列索引

values:值

head(n=5):返回前n项数据

tail(n=5):返回后n项数据

describe():打印出数据的数量、平均值等各项数据

sort_index(axis=1, ascending=False):根据索引排序

sort_values(by='B'):根据索引值排序

Pandas选择数据

数组选择方式:df[‘A']

切片选择方式:df[0:3] 或 df[‘20130102':'20130104']

根据标签选择:df.loc[‘20130102':'20130104',[‘A','B']]

根据位置选择:df.iloc[3:5,0:2]

混合选择:df.ix[:3,[‘A','C']]

条件判断选择:df[df.A > 0]

Pandas处理丢失数据

删除丢失数据的行:df.dropna(how='any')

填充丢失数据:df.fillna(value=5)

数据值是否为NaN:pd.isna(df1)

Pandas合并数据

pd.concat([df1, df2, df3], axis=0):合并df

pd.merge(left, right, on='key'):根据key字段合并

df.append(s, ignore_index=True):添加数据

Pandas导入导出

df.to_csv(‘foo.csv'):保存到csv文件

pd.read_csv(‘foo.csv'):从csv文件读取

df.to_excel(‘foo.xlsx', sheet_name='Sheet1'):保存到excel文件

pd.read_excel(‘foo.xlsx', ‘Sheet1', index_col=None, na_values=[‘NA']):从excel文件读取

Matplotlib

这里只介绍最简单的出图方式:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 随机生成1000个数据
data = pd.Series(np.random.randn(1000),index=np.arange(1000))
# 为了方便观看效果, 我们累加这个数据
data.cumsum()
# pandas 数据可以直接观看其可视化形式
data.plot()
plt.show()

 

Python 相关文章推荐
9种python web 程序的部署方式小结
Jun 30 Python
初步介绍Python中的pydoc模块和distutils模块
Apr 13 Python
python实现SMTP邮件发送功能
Jun 16 Python
python中的字典使用分享
Jul 31 Python
Python json 错误xx is not JSON serializable解决办法
Mar 15 Python
使用python生成目录树
Mar 29 Python
解决Django生产环境无法加载静态文件问题的解决
Apr 23 Python
Python中的相关分析correlation analysis的实现
Aug 29 Python
基于pandas中expand的作用详解
Dec 17 Python
python numpy库linspace相同间隔采样的实现
Feb 25 Python
python3+openCV 获取图片中文本区域的最小外接矩形实例
Jun 02 Python
Python3如何在服务器打印资产信息
Aug 27 Python
python pycurl验证basic和digest认证的方法
May 02 #Python
python解决js文件utf-8编码乱码问题(推荐)
May 02 #Python
用TensorFlow实现戴明回归算法的示例
May 02 #Python
用TensorFlow实现lasso回归和岭回归算法的示例
May 02 #Python
Python实现确认字符串是否包含指定字符串的实例
May 02 #Python
详解用TensorFlow实现逻辑回归算法
May 02 #Python
Python获取指定字符前面的所有字符方法
May 02 #Python
You might like
基于mysql的论坛(4)
2006/10/09 PHP
使用php实现快钱支付功能(涉及到接口)
2013/07/01 PHP
php解压缩zip和rar压缩包文件的方法
2019/07/10 PHP
php curl发送请求实例方法
2019/08/01 PHP
js wmp操作代码小结(音乐连播功能)
2008/11/08 Javascript
ASP.NET jQuery 实例10 动态修改hyperlink的URL值
2012/02/03 Javascript
JavaScript中判断对象类型的几种方法总结
2013/11/11 Javascript
JS实现匀速运动的代码实例
2013/11/29 Javascript
浏览器缩放检测的js代码
2014/09/28 Javascript
jQuery实现页面顶部显示的进度条效果完整实例
2015/12/09 Javascript
微信小程序 天气预报开发实例代码源码
2017/01/20 Javascript
nodejs模块学习之connect解析
2017/07/05 NodeJs
一步步教你利用Canvas对图片进行处理
2017/09/19 Javascript
Vue 换肤的示例实践
2018/01/23 Javascript
vue打包使用Nginx代理解决跨域问题
2018/08/27 Javascript
在Python中操作列表之list.extend()方法的使用
2015/05/20 Python
Python增量循环删除MySQL表数据的方法
2016/09/23 Python
PyQt5每天必学之工具提示功能
2018/04/19 Python
python实现雨滴下落到地面效果
2018/06/21 Python
学生信息管理系统python版
2018/10/17 Python
使用python判断你是青少年还是老年人
2018/11/29 Python
python 获取微信好友列表的方法(微信web)
2019/02/21 Python
Windows下Anaconda安装、换源与更新的方法
2020/04/17 Python
解决python打开https出现certificate verify failed的问题
2020/09/03 Python
python 使用paramiko模块进行封装,远程操作linux主机的示例代码
2020/12/03 Python
纯css3显示隐藏一个div特效的具体实现
2014/02/10 HTML / CSS
Html5画布_动力节点Java学院整理
2017/07/13 HTML / CSS
英国电子产品购物网站:TobyDeals
2018/07/30 全球购物
人事助理岗位职责
2013/11/18 职场文书
职工运动会邀请函
2014/02/02 职场文书
转让协议书范本
2014/04/15 职场文书
三年级小学生评语
2014/04/22 职场文书
营销团队口号
2014/06/06 职场文书
解除劳动合同协议书范本
2014/09/13 职场文书
反邪教教育心得体会
2016/01/15 职场文书
一文教你快速生成MySQL数据库关系图
2022/06/28 Redis