浅析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计算程序开始到程序结束的运行时间和程序运行的CPU时间
Nov 28 Python
python使用fileinput模块实现逐行读取文件的方法
Apr 29 Python
深入解析Python中的descriptor描述器的作用及用法
Jun 27 Python
Python基于回溯法子集树模板实现图的遍历功能示例
Sep 05 Python
Python学习之Django的管理界面代码示例
Feb 10 Python
python中计算一个列表中连续相同的元素个数方法
Jun 29 Python
python使用Pandas库提升项目的运行速度过程详解
Jul 12 Python
用python生成与调用cntk模型代码演示方法
Aug 26 Python
python flask搭建web应用教程
Nov 19 Python
Python爬虫库BeautifulSoup获取对象(标签)名,属性,内容,注释
Jan 25 Python
Python通过正则库爬取淘宝商品信息代码实例
Mar 02 Python
Python3开发环境搭建详细教程
Jun 18 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
全国FM电台频率大全 - 11 浙江省
2020/03/11 无线电
用PHP生成html分页列表的代码
2007/03/18 PHP
php使用smtp发送支持附件的邮件示例
2014/04/13 PHP
PHP定时执行任务的3种方法详解
2015/12/21 PHP
Laravel最佳分割路由文件(routes.php)的方式
2016/08/04 PHP
js实现日期级联效果
2014/01/23 Javascript
基于Phantomjs生成PDF的实现方法
2016/11/07 Javascript
详解数组Array.sort()排序的方法
2020/05/09 Javascript
AngularJS 防止页面闪烁的方法
2017/03/09 Javascript
Bootstrap 表单验证formValidation 实现表单动态验证功能
2017/05/17 Javascript
js单页hash路由原理与应用实战详解
2017/08/14 Javascript
Vue-cli 使用json server在本地模拟请求数据的示例代码
2017/11/02 Javascript
JavaScript生成指定范围的时间列表
2018/03/19 Javascript
vue 使用axios 数据请求第三方插件的使用教程详解
2019/07/05 Javascript
Electron+vue从零开始打造一个本地播放器的方法示例
2020/10/27 Javascript
[03:03]DOTA2校园争霸赛 济南城市决赛欢乐发奖活动
2013/10/21 DOTA
浅析python 中__name__ = '__main__' 的作用
2014/07/05 Python
Python heapq使用详解及实例代码
2017/01/25 Python
Python实现的快速排序算法详解
2017/08/01 Python
Python字符串拼接六种方法介绍
2017/12/18 Python
python 获取图片分辨率的方法
2019/01/08 Python
Python嵌套式数据结构实例浅析
2019/03/05 Python
Python中一个for循环循环多个变量的示例
2019/07/16 Python
安装python及pycharm的教程图解
2019/10/10 Python
pycharm 实现光标快速移动到括号外或行尾的操作
2021/02/05 Python
巧用CSS3 border实现图片遮罩效果代码
2012/04/09 HTML / CSS
森林防火工作方案
2014/02/14 职场文书
评析教师个人的自我评价
2014/02/19 职场文书
安全生产实施方案
2014/02/23 职场文书
森林病虫害防治方案
2014/06/02 职场文书
学校四风对照检查材料
2014/08/28 职场文书
中学生打架检讨书
2014/10/13 职场文书
九寨沟导游词
2015/02/02 职场文书
国庆节新闻稿
2015/07/17 职场文书
详解Python中__new__方法的作用
2022/03/31 Python
如何在Python中妥善使用进度条详解
2022/04/05 Python