python pandas 数据处理
pandas是基于numpy包扩展而来的,因而numpy的绝大多数方法在pandas中都能适用。
pandas中我们要熟悉两个数据结构Series 和DataFrame
Series是类似于数组的对象,它有一组数据和与之相关的标签组成。
import pandas as pd object=pd.Series([2,5,8,9]) print(object)
结果为:
0 2
1 5
2 8
3 9
dtype: int64
结果中包含一列数据和一列标签
我们可以用values和index分别进行引用
print(object.values)
print(object.index)
结果为:
[2 5 8 9]
RangeIndex(start=0, stop=4, step=1)
我们还可以按照自己的意愿构建标签
object=pd.Series([2,5,8,9],index=['a','b','c','d']) print(object)
结果为:
a 2
b 5
c 8
d 9
dtype: int64
我们还可以对序列进行运算
print(object[object>5])
结果为
c 8
d 9
dtype: int64
也可以把Series看成一个字典,使用in进行判断
print('a' in object)
结果为:
True
另外,值是不能直接被索引到的
print(2 in object)
结果为:
False
Series中的一些方法,
isnull或者notnull可以用于判断数据中缺失值情况
name或者index.name可以对数据进行重命名
DataFrame数据框,也是一种数据结构,和R中的数据框类似

data={'year':[2000,2001,2002,2003],
'income':[3000,3500,4500,6000]}
data=pd.DataFrame(data)
print(data)
结果为:
income year
0 3000 2000
1 3500 2001
2 4500 2002
3 6000 2003
data1=pd.DataFrame(data,columns=['year','income','outcome'],
index=['a','b','c','d'])
print(data1)
结果为:
year income outcome
a 2000 3000 NaN
b 2001 3500 NaN
c 2002 4500 NaN
d 2003 6000 NaN
新增加列outcome在data中没有,则用na值代替
索引的几种方式
print(data1['year'])
print(data1.year)
两种索引是等价的,都是对列进行索引,结果为:
a 2000
b 2001
c 2002
d 2003
Name: year, dtype: int64
对行进行索引,则是另外一种形式
print(data1.ix['a'])
结果为:
year 2000
income 3000
outcome NaN
Name: a, dtype: object
print(data1[1:3])
或者也可以用切片的形式
结果为:
year income outcome
b 2001 3500 NaN
c 2002 4500 NaN
增加和删除列
data1['money']=np.arange(4)
增加列为money
year income outcome money
a 2000 3000 NaN 0
b 2001 3500 NaN 1
c 2002 4500 NaN 2
d 2003 6000 NaN 3
del data1['outcome']
删除列结果为:
year income money
a 2000 3000 0
b 2001 3500 1
c 2002 4500 2
d 2003 6000 3
pandas中的主要索引对象以及相对应的索引方法和属性


此外还有一个reindex函数可以重新构建索引
data={'year':[2000,2001,2002,2003],
'income':[3000,3500,4500,6000]}
data1=pd.DataFrame(data,columns=['year','income','outcome'],
index=['a','b','c','d'])
data2=data1.reindex(['a','b','c','d','e'])
print(data2)
结果为:


data2=data1.reindex(['a','b','c','d','e'],method='ffill')
print(data2)
使用方法后的结果为:


索引删除以及过滤等相关方法
print(data1.drop(['a']))
结果为:

print(data1[data1['year']>2001])
结果为:

print(data1.ix[['a','b'],['year','income']])
结果为 :

print(data1.ix[data1.year>2000,:2])
结果为:

详细的索引过滤方法如下:

dataframe的算法运算
data={'year':[2000,2001,2002,2003],
'income':[3000,3500,4500,6000]}
data1=pd.DataFrame(data,columns=['year','income','outcome'],
index=['a','b','c','d'])
data2=pd.DataFrame(data,columns=['year','income','outcome'],
index=['a','b','c','d'])
data1['outcome']=range(1,5)
data2=data2.reindex(['a','b','c','d','e'])
print(data1.add(data2,fill_value=0))
结果为:


对dataframe进行排序
data=pd.DataFrame(np.arange(10).reshape((2,5)),index=['c','a'],
columns=['one','four','two','three','five']) print(data)
结果为:

print(data.sort_index())
结果为:

print(data.sort_index(axis=1))
结果为:

print(data.sort_values(by='one'))
结果为:

print(data.sort_values(by='one',ascending=False))
结果为:

这里是对结果进行降序排列
汇总以及统计描述
data=pd.DataFrame(np.arange(10).reshape((2,5)),index=['c','a'],
columns=['one','four','two','three','five']) print(data.describe())
结果为:

print(data.sum())
结果为:

print(data.sum(axis=1))
结果为:

详细约简方法

相关描述统计函数

相关系数与协方差
data=pd.DataFrame(np.random.random(20).reshape((4,5)),index=['c','a','b','c'],
columns=['one','four','two','three','five']) print(data)
结果为:

print(data.one.corr(data.three))
one和three的相关系数为:
0.706077105725
print(data.one.cov(data.three))
one和three的协方差为:
0.0677896135613
print(data.corrwith(data.one))
one和所有列的相关系数:

唯一值,成员资格等方法
data=pd.Series(['a','a','b','b','b','c','d','d']) print(data.unique())
结果为:
['a' 'b' 'c' 'd']
print(data.isin(['b']))
结果为:
0 False
1 False
2 True
3 True
4 True
5 False
6 False
7 False
dtype: bool
print(pd.value_counts(data.values,sort=False))
结果为:
d 2
c 1
b 3
a 2
dtype: int64

缺失值处理
data=pd.Series(['a','a','b',np.nan,'b','c',np.nan,'d']) print(data.isnull())
结果为:
0 False
1 False
2 False
3 True
4 False
5 False
6 True
7 False
dtype: bool
print(data.dropna())
结果为:
0 a
1 a
2 b
4 b
5 c
7 d
dtype: object
print(data.ffill())
结果为:
0 a
1 a
2 b
3 b
4 b
5 c
6 c
7 d
dtype: object
print(data.fillna(0))
结果为:
0 a
1 a
2 b
3 0
4 b
5 c
6 0
7 d
dtype: object


层次化索引
可以对数据进行多维度的索引
data = pd.Series(np.random.randn(10), index=[['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'd', 'd'],
[1, 2, 3, 1, 2, 3, 1, 2, 2, 3]]) print(data)
结果为:

print(data.index)
结果为:
MultiIndex(levels=[['a', 'b', 'c', 'd'], [1, 2, 3]],
labels=[[0, 0, 0, 1, 1, 1, 2, 2, 3, 3], [0, 1, 2, 0, 1, 2, 0, 1, 1, 2]]) print(data['c'])
结果为:

print(data[:,2])
结果为:

print(data.unstack())
结果为:

把数据转换成为一个dataframe
print(data.unstack().stack())

unstack()的逆运算
了解这些,应该可以进行一些常规的数据处理了。
python pandas 数据处理的更多相关文章
- Python———pandas数据处理
pandas模块 更高级的数据分析工具基于NumPy构建包含Series和DataFrame两种数据结构,以及相应方法 调用方法:from pandas import Series, DataFra ...
- Python——pandas数据处理(python programming)
- Python空间数据处理环境搭
Python空间数据处理环境搭 Conda的下载和安装 什么是Conda? 官方定义:Package, dependency and environment management for any la ...
- Python Pandas的使用 !!!!!详解
Pandas是一个基于python中Numpy模块的一个模块 Python在数据处理和准备⽅⾯⼀直做得很好,但在数据分析和建模⽅⾯就差⼀些.pandas帮助填补了这⼀空⽩,使您能够在Python中执 ...
- python & pandas链接mysql数据库
Python&pandas与mysql连接 1.python 与mysql 连接及操作,直接上代码,简单直接高效: import MySQLdb try: conn = MySQLdb.con ...
- Python pandas ERROR 2006 (HY000): MySQL server has gone away
之前在做python pandas大数据分析的时候,在将分析后的数据存入mysql的时候报ERROR 2006 (HY000): MySQL server has gone away 原因分析:在对百 ...
- python地理数据处理库geopy
http://blog.csdn.net/pipisorry/article/details/52205266 python地理位置处理 python地理编码地址以及用来处理经纬度的库 GeoDjan ...
- Python+Pandas 读取Oracle数据库
Python+Pandas 读取Oracle数据库 import pandas as pd from sqlalchemy import create_engine import cx_Oracle ...
- 看到篇博文,用python pandas改写了下
看到篇博文,https://blog.csdn.net/young2415/article/details/82795688 需求是需要统计部门礼品数量,自己简单绘制了个表格,如下: 大意是,每个部门 ...
随机推荐
- T-SQL 随机返回特定行数据和分页查询
T-SQL 随机返回特定行数据和分页查询 T-SQL 语言相较于标准SQL添加了很多特性,为了提高SQL Server的表现,是有必要深入了解的,面试时一般也会包含这两个小问题. 首先,是在一个Adv ...
- 我的Pandas应用场景
声明 工作后,很不幸的成为了团队中的QA.QA这个角色吧,说起来高大上,实际很苦逼,一句话概括一下:吃力不讨好!作为新人,公司每月一分钱没少我,至少现在跟开发的待遇是一样的,所以我还是得兢兢业业的对待 ...
- 在windows上编译MatConvNet
有个BT的要求,在windows上使用MatConvNet,并且需要支持GPU. 费了些力气,记录一下过程(暂不支持vl_imreadjpeg函数) 在这里下载MatConvNet,机器配置vs201 ...
- UI基础UIButton
UI基础UIButton 前面写了UIWindow.UIViewController,那些都是一些框架,框架需要填充上具体的view才能组成我们的应用,移动应用开发中UI占了很大一部分,最基础的UI实 ...
- ASP.NET MVC C#知识点提要
ASP.NET MVC C#知识点提要 本篇博文主要对asp.net mvc开发需要撑握的C#语言知识点进行简单回顾,尤其是C# 3.0才有的一些C#语言特性.对于正在学asp.net mvc的童鞋, ...
- Winform 单实例运行
Winform 单实例运行 前言 前两天在博客园看到<如何防止程序多次运行>,文章写的很好,最后还留下一个问题给我们思考.关于Winform的防止多次运行,曾经也想研究过,但是后来工作上没 ...
- VS2012下基于Glut 矩阵变换示例程序2:
在VS2012下基于Glut 矩阵变换示例程序:中我们在绘制甜圈或者圆柱时使用矩阵对相应的坐标进行变换后自己绘制甜圈或者圆柱.我们也可以使用glLoadMatrixf.glLoadMatrixd载入变 ...
- 用原生VideoView进行全屏播放时的问题
之前参加了一个课程,里面有一节讲到了用视频作为启动界面.讲师用的是自定义VideoView,重写onMeasure方法,因为原生的VideoView在那情况下不能实现全屏播放.当时没有深入研究,现在补 ...
- input type="file"去掉取消默认原来选择的文件
很多时候我们上传文件点击取消后或我们制定了内容格式上传不符合,再次点击input="file"按钮时,选择的文件还是原来的文件,却又上传不.当时想在旁边多添加个按钮清除file里面 ...
- 【解惑】剖析float型的内存存储和精度丢失问题
问题提出:12.0f-11.9f=0.10000038,"减不尽"为什么? 现在我们就详细剖析一下浮点型运算为什么会造成精度丢失? 1.小数的二进制表示问题 首先我们要搞清楚下面两 ...