python pandas 数据处理
pandas是基于numpy包扩展而来的,因而numpy的绝大多数方法在pandas中都能适用。
pandas中我们要熟悉两个数据结构Series 和DataFrame
Series是类似于数组的对象,它有一组数据和与之相关的标签组成。
import pandas as pdobject=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()的逆运算
了解这些,应该可以进行一些常规的数据处理了。
转载于:https://www.cnblogs.com/wkslearner/p/5928257.html
python pandas 数据处理相关推荐
- Python+Pandas数据处理时的分裂与分组聚合操作
开学第一课:一定不要这样问老师Python问题 中国大学MOOC"Python程序设计基础"第6次开课时间 董付国老师Python系列教材推荐与选用参考 ============= ...
- 轩小陌的Python笔记-Pandas 数据处理
Pandas 数据处理 一.数据IO操作 pandas IO操作主要是读取和写入有特定格式的文件,如CSV文件.TXT文件: # 本质上pd.read_csv和pd.read_tablepd.read ...
- 12 个 Pandas 数据处理高频操作
作者 | 老表 来源 | 简说Python 今天给大家分享几个自己近期常用的Pandas数据处理技巧,主打实用,所以你肯定能用的着,建议扫一遍,然后收藏起来,下次要用的时候再查查看即可. 简单说说 总 ...
- 独家 | 浅谈Python/Pandas中管道的用法
作者:Gregor Scheithauer博士 翻译:王闯(Chuck)校对:欧阳锦本文约2000字,建议阅读5分钟本文介绍了如何在Python/Pandas中运用管道的概念,以使代码更高效易读. 图 ...
- python基础代码库-Python基础数据处理库-NumPy
最近更新:2017-07-19 NumPy是Python做数据处理的底层库,是高性能科学计算和数据分析的基础,比如著名的Python机器学习库SKlearn就需要NumPy的支持.掌握NumPy的基础 ...
- csv 20位数据 如何打开可以预览完整数字_干货Python Pandas 做数据分析之玩转 Excel 报表分析...
本篇文章选自作者在 GitChat 的分享,若有什么问题,可在公众号回复「小助手」添加小助手微信,邀请你进入技术交流群. 各位朋友大家好,非常荣幸和大家聊一聊用 Python Pandas 处理 Ex ...
- pandas数据处理 代码_使用Pandas方法链接提高代码可读性
pandas数据处理 代码 We have been talking about using the Pandas pipe function to improve code readability. ...
- python pandas缺失值处理_Pandas之缺失值处理
原标题:Pandas之缺失值处理 本文作者:杨长青 本文编辑:周聪聪 技术总编:张学人 好消息!!!爬虫俱乐部将于2019年5月2日至4日在武汉举行Stata编程技术五一训练营,此次采用理论与案例相结 ...
- 你可能不知道的10个Python Pandas的技巧和特性
Pandas是一个基础库,用于分析.数据处理和数据科学.它是一个庞大的项目,有大量的选择和奥秘. 本教程将以Buzzfeed清单体介绍一些使用较少但惯用的Pandas功能,这些功能为你的代码提供更好的 ...
最新文章
- iOS开发之使用CocoaPods更新第三方出现“target overrides the `OTHER_LDFLAGS`……”问题解决方案
- RTP(Robi改造计划)--- 觉得还是搞风火轮(leg-wheel)好
- 智能家居迈向体验型市场,Aqara如何做到先行一步?
- GridView导出到Excel或Word文件
- 小学计算机教案设计ppt,小学信息技术《PowerPoint制做教案》ppt教案.ppt
- .NET开源工具类库:Masuit.Tools
- 有向图算法 PHP,科学网—一种可用于脑神经网络分析的有向图分解算法 第六稿 - 谢勤的博文...
- ipython notebook使用教程
- VB.net chart 控件使用
- 基于JAVA的教务排课系统.rar(源码+截图+数据库)
- JavaScript实现HTML导航栏下拉菜单[悬浮显示]
- vs2012 wp8 应用调试时报错 指定的通信资源(端口) 已由另一个应用程序使
- 投稿动态无法删除的情况下,如何批量删除B站动态?
- 【Multisim仿真】二极管加正向和反向电压测量实验
- 【阿里云仓库 可用 2022】IDEA MAVEN setings.xml 配置
- watch | 监听器、computend
- dmesg的详细用法
- 山西中考计算机知识点,2018年山西省中考必考语文知识点
- 如何将您的Nintendo 3DS重置为出厂设置
- 树莓派学习二 树莓派直接连接笔记本电脑方法(win10家庭版)