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

Pandas教程(已更新)

[复制链接]

2

主题

0

回帖

86

积分

提示词程序员

积分
86
发表于 昨天 20:29 | 显示全部楼层 |阅读模式
Pandas是Python里非常有趣,有意思的模块。虽然翻译过来的意思是“熊猫”,但其实不是这样的。”Pandas“源于“Panel Data Analysis", 是将数据以二维数组的形式表达。其可以将复杂繁琐的数据进行清晰的整理,访问起来也特别的轻松。

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

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


0,1,2是series的index,而1,2,3是数据本身。到了这一步,可能大家会有个问题:这series和List看起来一摸一样啊,到底有什么区别呢?
当然是有的。看完怎么生成series就知道了:
  1. import pandas as pd
  2. obj2 = pd.Series([4, 7, -5, 3], index=['d', 'b', 'a', 'c'])
复制代码


index在这里是可以自己修改的!就像一个自定义表格一样。

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

这样的数据当然也可以用来访问和篡改。如果想要访问一列,拿“pop"来举例:
frame['pop']即可访问。
  1. import pandas as pd
  2. data = {
  3.     'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],
  4.     'year': [2000, 2001, 2002, 2001, 2002, 2003],
  5.     'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]
  6. }
  7. frame = pd.DataFrame(data)
  8. print(frame)
复制代码


如果想提取数据或者篡改,可以用iloc或者loc. iloc语句无视index的名字,直接访问数字index(比如需要访问最后十行数据,那不管index有没有特殊名字,直接[-10:])
以下是用iloc和loc访问的案例:
      
  1. <div class="blockcode"><blockquote>one  two  three  four
  2. Ohio        0    1      2     3
  3. Colorado    4    5      6     7
  4. Utah        8    9     10    11
  5. New York   12   13     14    15
复制代码
  1. data.loc['Colorado', ['two', 'three']]
复制代码
  1. out: two      5
  2.        three    6
  3.        Name: Colorado, dtype: int64
复制代码
  1. data.iloc[[1, 2], [3, 0, 1]]
复制代码
  1. out:         four  one  two
  2. Colorado    7    4    5
  3. Utah       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教程,敬请期待!



4

主题

1

回帖

354

积分

高级程序员

积分
354
发表于 昨天 23:05 | 显示全部楼层
补充一下。pandas.Series 其实就是Dictionary 和 List的结合体:它是一个有顺序的dictionary。但是,在series里面可以有重复的index,与dictionary不同。当然,要尽量避免这种情况,因为这样在利用这种Series生成Dataframe的时候会有很多潜在的问题。

还有,在创建DataFrame的时候可以利用好几种生成方式,主要形式为 List of dictionaries, Dictionary of Lists, List of Series, List of Lists (matrix). 可以看出,包在最外围的结构要么是List要么是Dictionary。当List为最外围的结构时,List里面的每一个元素都是DataFrame里面的一行,Dict中则是每一个元素为一列,列名为这个元素在Dict中对应的key。DataFrame生成还有很多其他的特性(如每列怎么命名,NaN什么时候会出现等等),希望你能在IDLE里面尝试并学习
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 5-10-2025 23:38 , Processed in 0.060077 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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