浅析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中用于求最小值的min()方法
May 15 Python
Python制作Windows系统服务
Mar 25 Python
python3 发送任意文件邮件的实例
Jan 23 Python
widows下安装pycurl并利用pycurl请求https地址的方法
Oct 15 Python
python 限制函数执行时间,自己实现timeout的实例
Jan 12 Python
Pycharm运行加载文本出现错误的解决方法
Jun 27 Python
python算法题 链表反转详解
Jul 02 Python
python图形绘制奥运五环实例讲解
Sep 14 Python
Python Sympy计算梯度、散度和旋度的实例
Dec 06 Python
使用Python获取当前工作目录和执行命令的位置
Mar 09 Python
python实现猜数游戏(保存游戏记录)
Jun 22 Python
Python Django搭建文件下载服务器的实现
May 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
mysql limit查询优化分析
2008/11/12 PHP
PHP获取二维数组中某一列的值集合
2015/12/25 PHP
php封装一个异常的处理类
2017/06/08 PHP
Laravel 已登陆用户再次查看登陆页面的自动跳转设置方法
2019/09/30 PHP
javascript多种数据类型表格排序代码分析
2010/09/11 Javascript
js getBoundingClientRect() 来获取页面元素的位置
2010/11/25 Javascript
JSON.parse()和JSON.stringify()使用介绍
2014/06/20 Javascript
Javascript实现禁止输入中文或英文的例子
2014/12/09 Javascript
Javascript 拖拽雏形(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
JQuery中attr属性和jQuery.data()学习笔记【必看】
2016/05/18 Javascript
AngularJs bootstrap详解及示例代码
2016/09/01 Javascript
[原创]JavaScript语法高亮插件highlight.js用法详解【附highlight.js本站下载】
2016/11/01 Javascript
JS中闭包的经典用法小结(2则示例)
2016/12/28 Javascript
Node.js简单入门前传
2017/08/21 Javascript
Angular4实现图片上传预览路径不安全的问题解决
2017/12/25 Javascript
vue 组件的封装之基于axios的ajax请求方法
2018/08/11 Javascript
vue过滤器用法实例分析
2019/03/15 Javascript
vue项目中mock.js的使用及基本用法
2019/05/22 Javascript
[51:36]Optic vs Newbee 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python通过ffmgep从视频中抽帧的方法
2018/12/05 Python
Python实现的IP端口扫描工具类示例
2019/02/15 Python
Django 导出项目依赖库到 requirements.txt过程解析
2019/08/23 Python
python-序列解包(对可迭代元素的快速取值方法)
2019/08/24 Python
python3中使用__slots__限定实例属性操作分析
2020/02/14 Python
解决json中ensure_ascii=False的问题
2020/04/03 Python
关于Keras Dense层整理
2020/05/21 Python
解决python调用自己文件函数/执行函数找不到包问题
2020/06/01 Python
详解win10下pytorch-gpu安装以及CUDA详细安装过程
2021/01/28 Python
从Pytorch模型pth文件中读取参数成numpy矩阵的操作
2021/03/04 Python
目前不被任何主流浏览器支持的CSS3属性汇总
2014/07/21 HTML / CSS
司考复习计划
2015/01/19 职场文书
秦兵马俑导游词
2015/02/02 职场文书
2015年度团总支工作总结
2015/04/23 职场文书
廉洁自律承诺书2016
2016/03/25 职场文书
数据库连接池
2021/04/06 MySQL
Python实现socket库网络通信套接字
2021/06/04 Python