浅析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爬取软考试题之ip自动代理
Mar 28 Python
使用Python写一个贪吃蛇游戏实例代码
Aug 21 Python
Ubuntu安装Jupyter Notebook教程
Oct 18 Python
修改默认的pip版本为对应python2.7的方法
Nov 06 Python
Python 确定多项式拟合/回归的阶数实例
Dec 29 Python
在python带权重的列表中随机取值的方法
Jan 23 Python
Python中输入和输出(打印)数据实例方法
Oct 13 Python
在jupyter notebook 添加 conda 环境的操作详解
Apr 10 Python
python里的单引号和双引号的有什么作用
Jun 17 Python
Django如何继承AbstractUser扩展字段
Nov 27 Python
Python 读写 Matlab Mat 格式数据的操作
May 19 Python
分享提高 Python 代码的可读性的技巧
Mar 03 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
4.与数据库的连接
2006/10/09 PHP
模仿OSO的论坛(二)
2006/10/09 PHP
php数组(array)输出的三种形式详解
2013/06/05 PHP
PHP Session 变量的使用方法详解与实例代码
2013/09/11 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(一)
2014/06/23 PHP
判断、添加和删除WordPress置顶文章的相关PHP函数小结
2015/12/10 PHP
php基于curl实现的股票信息查询类实例
2016/11/11 PHP
在vs2010中调试javascript代码方法
2011/02/11 Javascript
JS中window.open全屏命令解析及使用示例
2013/12/11 Javascript
Javascript 按位与赋值运算符 (&amp;=)使用介绍
2014/02/04 Javascript
图片上传之FileAPI与NodeJs
2017/01/24 NodeJs
详解vue-cli脚手架build目录中的dev-server.js配置文件
2017/11/24 Javascript
Vue中的Vux配置指南
2017/12/08 Javascript
jquery插件懒加载的示例
2020/10/24 jQuery
Vue实现随机验证码功能
2020/12/29 Vue.js
[01:43]倾听DOTA2英雄之声 魅惑魔女国服配音鉴赏
2013/06/06 DOTA
Python中的rfind()方法使用详解
2015/05/19 Python
Python中安装easy_install的方法
2018/11/18 Python
Python3.6.2调用ffmpeg的方法
2019/01/10 Python
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
2019/01/29 Python
python脚本当作Linux中的服务启动实现方法
2019/06/28 Python
Tensorflow模型实现预测或识别单张图片
2019/07/19 Python
如何基于python生成list的所有的子集
2019/11/11 Python
手把手教你用纯css3实现轮播图效果实例
2017/05/04 HTML / CSS
CSS3 按钮边框动画的实现
2020/11/12 HTML / CSS
阿里健康大药房:阿里自营网上药店
2017/08/01 全球购物
高二物理教学反思
2014/02/08 职场文书
村长贪污检举信
2014/04/04 职场文书
《春天来了》教学反思
2014/04/07 职场文书
访谈节目策划方案
2014/05/15 职场文书
2014年移动公司工作总结
2014/12/08 职场文书
2014年标准化工作总结
2014/12/17 职场文书
2015年村党支部工作总结
2015/04/30 职场文书
MySQL数据库中varchar类型的数字比较大小的方法
2021/11/17 MySQL
Python OpenCV超详细讲解调整大小与图像操作的实现
2022/04/02 Python
python manim实现排序算法动画示例
2022/08/14 Python