浅析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标准库内置函数complex介绍
Nov 25 Python
Python使用requests及BeautifulSoup构建爬虫实例代码
Jan 24 Python
解决Tensorflow使用pip安装后没有model目录的问题
Jun 13 Python
Python简单读写Xls格式文档的方法示例
Aug 17 Python
python 含子图的gif生成时内存溢出的方法
Jul 07 Python
详细介绍pandas的DataFrame的append方法使用
Jul 31 Python
Python基础之字符串常见操作经典实例详解
Feb 26 Python
python如何更新包
Jun 11 Python
利用python中的matplotlib打印混淆矩阵实例
Jun 16 Python
Python中pass的作用与使用教程
Nov 13 Python
OpenCV-Python实现怀旧滤镜与连环画滤镜
Jun 09 Python
python开发飞机大战游戏
Jul 15 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教程 预定义变量
2009/10/23 PHP
PHP 第二节 数据类型之字符串类型
2012/04/28 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装(win+linux)
2012/05/05 PHP
php数字每三位加逗号的功能函数
2015/10/22 PHP
PHPstorm快捷键(分享)
2017/07/17 PHP
php unlink()函数使用教程
2018/07/12 PHP
jQuery动画animate方法使用介绍
2013/05/06 Javascript
NodeJS学习笔记之Connect中间件模块(一)
2015/01/27 NodeJs
jQuery中使用animate自定义动画的方法
2016/05/29 Javascript
jquery表格datatables实例解析 直接加载和延迟加载
2016/08/12 Javascript
Dropzone.js实现文件拖拽上传功能(附源码下载)
2016/11/22 Javascript
jquery easyui DataGrid简单示例
2017/01/23 Javascript
微信小程序生成二维码的示例代码
2019/03/29 Javascript
ES6 Set结构的应用实例分析
2019/06/26 Javascript
为什么Vue3.0使用Proxy实现数据监听(defineProperty表示不背这个锅)
2019/10/14 Javascript
react-router-dom 嵌套路由的实现
2020/05/02 Javascript
浅谈Vue static 静态资源路径 和 style问题
2020/11/07 Javascript
python使用BeautifulSoup分页网页中超链接的方法
2015/04/04 Python
python如何实现异步调用函数执行
2019/07/08 Python
Python寻找路径和查找文件路径的示例
2019/07/10 Python
python向图片里添加文字
2019/11/26 Python
pytorch载入预训练模型后,实现训练指定层
2020/01/06 Python
使用 pytorch 创建神经网络拟合sin函数的实现
2020/02/24 Python
python argparse模块通过后台传递参数实例
2020/04/20 Python
pycharm如何设置官方中文(如何汉化)
2020/12/29 Python
英国排名第一的礼品体验公司:Red Letter Days
2018/08/16 全球购物
高校生生产实习自我鉴定
2013/09/21 职场文书
制定岗位职责的原则
2013/11/08 职场文书
kfc实习自我鉴定
2013/12/14 职场文书
机械设计制造及其自动化专业求职信
2014/06/17 职场文书
付款委托书范本
2014/10/05 职场文书
解除施工合同协议书
2014/10/17 职场文书
化验员岗位职责
2015/02/14 职场文书
教师节老师寄语
2015/05/28 职场文书
职场干货:简历中的自我评价应该这样写!
2019/05/06 职场文书
使用vuex-persistedstate本地存储vuex
2022/04/29 Vue.js