浅析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 相关文章推荐
python直接访问私有属性的简单方法
Jul 25 Python
windows下Python实现将pdf文件转化为png格式图片的方法
Jul 21 Python
《Python学习手册》学习总结
Jan 17 Python
python去除扩展名的实例讲解
Apr 23 Python
删除python pandas.DataFrame 的多重index实例
Jun 08 Python
python 列表转为字典的两个小方法(小结)
Jun 28 Python
Python3 字典dictionary入门基础附实例
Feb 10 Python
Python3操作YAML文件格式方法解析
Apr 10 Python
Python基于进程池实现多进程过程解析
Apr 30 Python
django教程如何自学
Jul 31 Python
pytorch 两个GPU同时训练的解决方案
Jun 01 Python
Python3中最常用的5种线程锁实例总结
Jul 07 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
PHP获取http请求的头信息实现步骤
2012/12/16 PHP
修改destoon会员公司的伪静态中的com目录的方法
2014/08/21 PHP
详解php中的implements 使用
2017/06/13 PHP
Laravel如何同时连接多个数据库详解
2019/08/13 PHP
javascript+xml技术实现分页浏览
2008/07/27 Javascript
javascript eval和JSON之间的联系
2009/12/31 Javascript
Javascript中定义方法的另类写法(批量定义js对象的方法)
2011/02/25 Javascript
js控制的遮罩层实例介绍
2013/05/29 Javascript
js中的前绑定和后绑定详解
2013/08/01 Javascript
jQuery插件bgStretcher.js实现全屏背景特效
2015/06/05 Javascript
基于jquery实现select选择框内容左右移动添加删除代码分享
2015/08/25 Javascript
jQuery实现的数值范围range2dslider选取插件特效多款代码分享
2015/08/27 Javascript
如何解决谷歌浏览器下jquery无法获取图片的尺寸
2015/09/10 Javascript
javascript获取系统当前时间的方法
2015/11/19 Javascript
JavaScript使用原型和原型链实现对象继承的方法详解
2017/04/05 Javascript
JS实现AES加密并与PHP互通的方法分析
2017/04/19 Javascript
Node.js中Bootstrap-table的两种分页的实现方法
2017/09/18 Javascript
搭建element-ui的Vue前端工程操作实例
2018/02/23 Javascript
Express的HTTP重定向到HTTPS的方法
2018/06/06 Javascript
微信小程序实现留言板功能
2018/11/02 Javascript
Node.js操作系统OS模块用法分析
2019/01/04 Javascript
微信小程序实现折线图的示例代码
2019/06/07 Javascript
jquery插件实现轮播图效果
2020/10/19 jQuery
Vue实现点击当前行变色
2020/12/14 Vue.js
vue+flask实现视频合成功能(拖拽上传)
2021/03/04 Vue.js
详解Python进程间通信之命名管道
2017/08/28 Python
Python 从一个文件中调用另一个文件的类方法
2019/01/10 Python
pandas计数 value_counts()的使用
2019/06/24 Python
利用Python模拟登录pastebin.com的实现方法
2019/07/12 Python
tensorflow之读取jpg图像长和宽实例
2020/06/18 Python
优秀中学生事迹材料
2014/01/31 职场文书
网络工程专业自荐信范文
2014/03/16 职场文书
内勤主管岗位职责
2014/04/03 职场文书
初中生思想道德自我评价
2015/03/09 职场文书
二婚主持词
2015/06/30 职场文书
canvas 中如何实现物体的框选
2022/08/05 Javascript