找回密码
 立即注册
搜索
热搜: 活动 交友
查看: 27|回复: 0

[1] Python Pandas教学

[复制链接]

2

主题

0

回帖

86

积分

提示词程序员

积分
86
发表于 前天 18:10 | 显示全部楼层 |阅读模式

Pandas是Python里非常有趣,有意思的模块。虽然翻译过来的意思是“熊猫”,但其实不是这样的。”Pandas“源于“Panel Data Analysis", 是将数据以二维数组的形式表达。其可以将复杂繁琐的数据进行清晰的整理,访问起来也特别的轻松。

Pandas的数据可以分为Series和Dataframe.

Series其实可以理解为List的升级版,如下:


0,1,2是series的index,而1,2,3是数据本身。到了这一步,可能大家会有个问题:这series和List看起来一摸一样啊,到底有什么区别呢?
当然是有的。看完怎么生成series就知道了:
obj2 [color=var(--code-variable_v3) !important]= pd[color=var(--code-text_v3)].Series[color=var(--code-text_v3)]([color=var(--code-text_v3)][[color=var(--code-number_v3)]4[color=var(--code-text_v3)], [color=var(--code-number_v3)]7[color=var(--code-text_v3)], [color=var(--code-variable_v3) !important]-[color=var(--code-number_v3)]5[color=var(--code-text_v3)], [color=var(--code-number_v3)]3[color=var(--code-text_v3)], index[color=var(--code-variable_v3) !important]=[color=var(--code-text_v3)][[color=var(--code-parameter_v3)]'d'[color=var(--code-text_v3)], [color=var(--code-parameter_v3)]'b'[color=var(--code-text_v3)], [color=var(--code-parameter_v3)]'a'[color=var(--code-text_v3)], [color=var(--code-parameter_v3)]'c'[color=var(--code-text_v3)])[color=var(--code-text_v3)]
d    [color=var(--code-number_v3)]4b    [color=var(--code-number_v3)]7a   [color=var(--code-variable_v3) !important]-[color=var(--code-number_v3)]5c    [color=var(--code-number_v3)]3dtype[color=var(--code-text_v3)]: int64[color=var(--code-text_v3)]
index在这里是可以自己修改的!就像一个自定义表格一样。

讲完了Series, 就是Dataframe了。Dataframe可以理解为好多个series放在一起,形成如Excel表格一般的二维数组。Dataframe的使用方法和用处有很多,本教程就会cover其中三种:制作Dataframe, 访问数据,形成excel表格。
制作Dataframe:
Dataframe的制作方法也是非常之多。个人认为最好用的是输入一个字典,其中key就是每一列的index,value就是所有column底下的数据形成的list。需要注意的是,Dataframe有着行和列两种index,让访问数据变得更加灵活。以下是创建Dataframe的例子:

这样的数据当然也可以用来访问和篡改。如果想要访问一列,拿“pop"来举例:
frame['pop']即可访问。
import pandas as pddata [color=var(--code-variable_v3) !important]= [color=var(--code-text_v3)]{    [color=var(--code-parameter_v3)]'state'[color=var(--code-text_v3)]: [color=var(--code-text_v3)][[color=var(--code-parameter_v3)]'Ohio'[color=var(--code-text_v3)], [color=var(--code-parameter_v3)]'Ohio'[color=var(--code-text_v3)], [color=var(--code-parameter_v3)]'Ohio'[color=var(--code-text_v3)], [color=var(--code-parameter_v3)]'Nevada'[color=var(--code-text_v3)], [color=var(--code-parameter_v3)]'Nevada'[color=var(--code-text_v3)], [color=var(--code-parameter_v3)]'Nevada'[color=var(--code-text_v3)],    [color=var(--code-parameter_v3)]'year'[color=var(--code-text_v3)]: [color=var(--code-text_v3)][[color=var(--code-number_v3)]2000[color=var(--code-text_v3)], [color=var(--code-number_v3)]2001[color=var(--code-text_v3)], [color=var(--code-number_v3)]2002[color=var(--code-text_v3)], [color=var(--code-number_v3)]2001[color=var(--code-text_v3)], [color=var(--code-number_v3)]2002[color=var(--code-text_v3)], [color=var(--code-number_v3)]2003[color=var(--code-text_v3)],    [color=var(--code-parameter_v3)]'pop'[color=var(--code-text_v3)]: [color=var(--code-text_v3)][[color=var(--code-number_v3)]1.5[color=var(--code-text_v3)], [color=var(--code-number_v3)]1.7[color=var(--code-text_v3)], [color=var(--code-number_v3)]3.6[color=var(--code-text_v3)], [color=var(--code-number_v3)]2.4[color=var(--code-text_v3)], [color=var(--code-number_v3)]2.9[color=var(--code-text_v3)], [color=var(--code-number_v3)]3.2[color=var(--code-text_v3)]}frame [color=var(--code-variable_v3) !important]= pd[color=var(--code-text_v3)].DataFrame[color=var(--code-text_v3)](data[color=var(--code-text_v3)])print[color=var(--code-text_v3)](frame[color=var(--code-text_v3)])[color=var(--code-text_v3)]

[color=var(--code-block-code-color)]   pop   state  year
0  1.5    Ohio  20001  1.7    Ohio  20012  3.6    Ohio  20023  2.4  Nevada  20014  2.9  Nevada  20025  3.2  Nevada  2003
如果想提取数据或者篡改,可以用iloc或者loc. iloc语句无视index的名字,直接访问数字index(比如需要访问最后十行数据,那不管index有没有特殊名字,直接[-10:])
以下是用iloc和loc访问的案例:
        one  two  three  fourOhio      0    1      2     3Colorado  4    5      6     7Utah      8    9     10    11New York  12   13     14    15
data[color=var(--code-text_v3)].loc[color=var(--code-text_v3)][[color=var(--code-parameter_v3)]'Colorado'[color=var(--code-text_v3)], [color=var(--code-text_v3)][[color=var(--code-parameter_v3)]'two'[color=var(--code-text_v3)], [color=var(--code-parameter_v3)]'three'[color=var(--code-text_v3)]out:two      5three    6Name: Colorado, dtype: int64
data[color=var(--code-text_v3)].iloc[color=var(--code-text_v3)][[color=var(--code-text_v3)][[color=var(--code-number_v3)]1[color=var(--code-text_v3)], [color=var(--code-number_v3)]2[color=var(--code-text_v3)], [color=var(--code-text_v3)][[color=var(--code-number_v3)]3[color=var(--code-text_v3)], [color=var(--code-number_v3)]0[color=var(--code-text_v3)], [color=var(--code-number_v3)]1[color=var(--code-text_v3)]four  one  twoColorado    7    4    5Utah       11    8    9
(tip: iloc 和loc还有很多各种各样的使用方式!不像传统语法,其格式并不是固定的。感兴趣的可以去博客,谷歌查一下!)

讲了这么多语法,是时候讲一些实用的东西了。Dataframe还有一个好处,就是可以从Excel直接导入,也可以导出成xlsx格式的文件。其甚至可以用来生成Matplotlib的图表!(请期待下次更新Matplotlib教程,也会提到Dataframe。这下大家意识到学好Pandas的重要性了吧)。

好。Excel的格式转换其实特别简单,一句代码就行:
导入:
df = pd.read_excel('example.xlsx')
导出:
df.to_excel('example.xlsx', index = )
index 默认为True,需要row index不写也行。但想要输出的excel文件不显示row index,就写index = False.

读完这篇文章,你也算是入门DataFrame了。如果有任何问题或者探讨话题,可以在评论区里留言,小编绝对会看的!
下期内容为Matplotlib教程,敬请期待!





您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|RealDevClub ( 沪ICP备2024093864号-1 )

GMT+8, 5-11-2025 04:09 , Processed in 0.074028 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表