浅析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警察与小偷的实现之一客户端与服务端通信实例
Oct 09 Python
Python实用日期时间处理方法汇总
May 09 Python
python计算圆周率pi的方法
Jul 11 Python
Python实现上下班抢个顺风单脚本
Feb 07 Python
numpy.std() 计算矩阵标准差的方法
Jul 11 Python
使用Python paramiko模块利用多线程实现ssh并发执行操作
Dec 05 Python
pytorch 常用线性函数详解
Jan 15 Python
使用Keras加载含有自定义层或函数的模型操作
Jun 10 Python
Python 求向量的余弦值操作
Mar 04 Python
python中24小时制转换为12小时制的方法
Jun 18 Python
Python 发送SMTP邮件的简单教程
Jun 24 Python
Python经常使用的一些内置函数
Apr 11 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 adodb连接mssql解决乱码问题
2009/06/12 PHP
PHP教程 基本语法
2009/10/23 PHP
提高php运行速度的一些小技巧分享
2012/07/03 PHP
ThinkPHP自动完成中使用函数与回调方法实例
2014/11/29 PHP
php实现将wav文件转换成图像文件并在页面中显示的方法
2015/04/21 PHP
Linux+Nginx+MySQL下配置论坛程序Discuz的基本教程
2015/12/23 PHP
win10 apache配置虚拟主机后localhost无法使用的解决方法
2018/01/27 PHP
jquery实现滑动图片自己测试的例子
2013/11/05 Javascript
ff chrome和ie下全局动态定位的异同及全局高度的取法
2014/06/30 Javascript
Ext4.2的Ext.grid.plugin.RowExpander无法触发事件解决办法
2014/08/15 Javascript
JS使用for循环遍历Table的所有单元格内容
2014/08/21 Javascript
jQuery实现在最后一个元素之前插入新元素的方法
2015/07/18 Javascript
JS中setTimeout的巧妙用法前端函数节流
2016/03/24 Javascript
jQuery替换节点用法示例(使用replaceWith方法)
2016/09/08 Javascript
js导出excel文件的简洁方法(推荐)
2016/11/02 Javascript
微信小程序 开发经验整理
2017/02/15 Javascript
JS+HTML5实现图片在线预览功能
2017/07/22 Javascript
基于node.js express mvc轻量级框架实践
2017/09/14 Javascript
Angular7创建项目、组件、服务以及服务的使用
2019/02/19 Javascript
node.js基础知识汇总
2020/08/25 Javascript
Python中实现参数类型检查的简单方法
2015/04/21 Python
Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法
2018/01/11 Python
python django下载大的csv文件实现方法分析
2019/07/19 Python
Django实现web端tailf日志文件功能及实例详解
2019/07/28 Python
基于Python实现扑克牌面试题
2019/12/11 Python
python百行代码自制电脑端网速悬浮窗的实现
2020/05/12 Python
解决Django Haystack全文检索为空的问题
2020/05/19 Python
html5指南-5.使用web storage存储键值对的数据
2013/01/07 HTML / CSS
OSPREY LONDON官网:英国本土皮具品牌
2019/05/31 全球购物
贝佳斯官方网站:Borghese
2020/05/08 全球购物
物业保安员岗位职责制度
2014/01/30 职场文书
王老吉广告词
2014/03/20 职场文书
幼儿园学前班幼儿评语
2014/12/29 职场文书
社区三八妇女节活动总结
2015/02/06 职场文书
基层工作经历证明
2015/06/19 职场文书
《原神》新角色演示“神里绫人:林隐泓洄” 宠妹狂魔
2022/04/03 其他游戏