浅析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 相关文章推荐
在Linux下使用Python的matplotlib绘制数据图的教程
Jun 11 Python
python基于BeautifulSoup实现抓取网页指定内容的方法
Jul 09 Python
用python实现k近邻算法的示例代码
Sep 06 Python
使用python实现语音文件的特征提取方法
Jan 09 Python
Python创建字典的八种方式
Feb 27 Python
使用python分析统计自己微信朋友的信息
Jul 19 Python
在macOS上搭建python环境的实现方法
Aug 13 Python
pytorch使用tensorboardX进行loss可视化实例
Feb 24 Python
使用pytorch实现论文中的unet网络
Jun 24 Python
为什么说python更适合树莓派编程
Jul 20 Python
Python 一键获取电脑浏览器的账号密码
May 11 Python
移除Selenium中window.navigator.webdriver值
Jun 10 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 什么是PEAR?(第三篇)
2009/03/19 PHP
php提取字符串中网站url地址的方法
2014/12/03 PHP
PHP实现JS中escape与unescape的方法
2016/07/11 PHP
php实现的pdo公共类定义与用法示例
2017/07/19 PHP
简单通用的JS滑动门代码
2008/12/19 Javascript
使用jquery.upload.js实现异步上传示例代码
2014/07/29 Javascript
javascript制作2048游戏
2015/03/30 Javascript
自动化测试读写64位操作系统的注册表
2016/08/15 Javascript
js转html实体的方法
2016/09/27 Javascript
js选项卡的制作方法
2017/01/23 Javascript
Vue2路由动画效果的实现代码
2017/07/10 Javascript
angularjs2 ng2 密码隐藏显示的实例代码
2017/08/01 Javascript
Node.js中环境变量process.env的一些事详解
2017/10/26 Javascript
基于 Vue.js 之 iView UI 框架非工程化实践记录(推荐)
2017/11/21 Javascript
详解如何在微信小程序中愉快地使用sass
2018/07/30 Javascript
JS解惑之Object中的key是有序的么
2019/05/06 Javascript
学习LayUI时自研的表单参数校验框架案例分析
2019/07/29 Javascript
JavaScript Array对象基本方法详解
2019/09/03 Javascript
Vue.js如何使用Socket.IO的示例代码
2019/09/05 Javascript
WEEX环境搭建与入门详解
2019/10/16 Javascript
微信小程序自定义菜单切换栏tabbar组件代码实例
2019/12/30 Javascript
Python random模块用法解析及简单示例
2017/12/18 Python
将tensorflow的ckpt模型存储为npy的实例
2018/07/09 Python
Python使用pymongo模块操作MongoDB的方法示例
2018/07/20 Python
Appium+Python自动化测试之运行App程序示例
2019/01/23 Python
Python字符串通过'+'和join函数拼接新字符串的性能测试比较
2019/03/05 Python
Python3实现将一维数组按标准长度分隔为二维数组
2019/11/29 Python
Python全局变量与global关键字常见错误解决方案
2020/10/05 Python
如何开发一款堪比APP的微信小程序(腾讯内部团队分享)
2016/12/22 HTML / CSS
营销人才自我鉴定范文
2013/12/25 职场文书
学生手册家长评语
2014/02/10 职场文书
2014年心理健康教育工作总结
2014/12/06 职场文书
幼儿园家长工作总结2015
2015/04/25 职场文书
CSS3通过var()和calc()函数实现动画特效
2021/03/30 HTML / CSS
pytorch 实现变分自动编码器的操作
2021/05/24 Python
vue-cil之axios的二次封装与proxy反向代理使用说明
2022/04/07 Vue.js