问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Python其实很简单 第十九章 Pandas之Series与DataFrame

发布网友 发布时间:2022-10-17 02:29

我来回答

1个回答

热心网友 时间:2023-09-17 23:30

19.1安装Anaconda

Anaconda是Python的一个开源发行版本,它预装了丰富的第三方库,而且主要面向科学计算和数据分析,使用起来要比原版的Python更省时省力。

Anaconda官方下载网址为:https://www.continuum.io/downloads。下载和安装的方法很简单,若有问题可以在网上搜索相关内容学习解决。

安装Anaconda之后,就会发现在Anaconda目录下同时安装了Jupyter Notebook、Spyder等工具,我们接下来主要使用Spyder进行开发。关于Spyder的使用方法非常简单,大家也可以去网上搜索学习。

虽然Anaconda已经预装了很多常用的包,但有时我们也需要自己安装一些包。可以在开始菜单中选择“Anaconda Anaconda Prompt”命令,在命令行输入conda install ( 代表包名)即可安装,也可以输入pip install 。

19.2数据分析包Pandas

Pandas是Python的一个数据分析包,Anaconda安装时已经附带安装了Pandas包。

Pandas数据结构有三种:Series(一维数组)、DataFrame(二维数组)和Panel(三维数组),其中最常用的是前两种数据结构。

19.2.1 Series

Series(序列)用于存储一行或一列数据,以及与之相关的索引的集合。

语法格式如下:

Series([数据1,数据2,......], index=[索引1,索引2,......])

例:

from pandas import Series

s=Series(['张三','李四','王五'],index=[1,2,3])

print(s)

输出结果如下:

1 张三

2 李四

3 王五

dtype: object

上面建立序列时指定了索引,若不指定,则默认的索引值从0开始。如下:

s=Series(['张三','李四','王五'])

输出结果为:

0 张三

1 李四

2 王五

dtype: object

索引值也可以为字符串。如下:

from pandas import Series

s=Series(['张三','李四','王五'],index=['A','B','C'])

print(s)

输出结果为:

A 张三

B 李四

C 王五

dtype: object

1、访问序列

(1)可以通过索引访问序列,如:

from pandas import Series

s=Series(['张三','李四','王五'])

print(s)

print(s[0])

print(s[1:])

运行结果如下:

0 张三

1 李四

2 王五

dtype: object #print(s)输出

张三 #print(s[0])输出

1 李四

2 王五

dtype: object #print(s[1:])输出

(2)通过值获取索引值

from pandas import Series

s=Series(['张三','李四','王五'],index=['A','B','C'])

print(s.index[s.values=='李四'])

运行结果:

Index(['B'], dtype='object')

(3)判断值是否存在

from pandas import Series

s=Series(['张三','李四','王五'],index=['A','B','C'])

f='李四' in s.values

print(f)

运行结果:

True

(4)定位获取

from pandas import Series

s=Series(['张三','李四','王五','孙六'],index=['A','B','C','D'])

print(s[[0,2,1]])

运行结果:

A 张三

C 王五

B 李四

dtype: object

2、修改序列

(1)追加序列,如:

from pandas import Series

s=Series(['张三','李四','王五'],index=['A','B','C'])

s1=Series(['孙六'],index=['D'])

s=s.append(s1)

print(s)

运行结果:

A 张三

B 李四

C 王五

D 孙六

dtype: object

(2)修改序列的值

from pandas import Series

s=Series(['张三','李四','王五','孙六'],index=['A','B','C','D'])

s[1]='李飞'

print(s)

运行结果:

A 张三

B 李飞

C 王五

D 孙六

dtype: object

不知道索引,仅知道要修改的值,也可通过值查找到索引后,再修改序列的值。如:

s[s.index[s.values=='李四']]='李飞'

这样也可以将“李四”修改为“李飞。

(3)修改索引

from pandas import Series

s=Series(['张三','李四','王五','孙六'],index=['A','B','C','D'])

s.index=[0,1,2,3]

print(s)

运行结果:

0 张三

1 李四

2 王五

3 孙六

dtype: object

(4)删除元素

from pandas import Series

s=Series(['张三','李四','王五','孙六'],index=['A','B','C','D'])

s=s.drop('A')

print(s)

运行结果:

B 李四

C 王五

D 孙六

dtype: object

(5)重新排序

可以按照索引排序,使用sort_index(ascending=True)方法对index进行排序操作。

from pandas import Series

s=Series(['张三','李四','王五','孙六'],index=['A','B','C','D'])

s=s.sort_index(ascending=False) # ascending=False表示按降序排列

print(s)

运行结果:

D 孙六

C 王五

B 李四

A 张三

dtype: object

(6)重置索引

重置索引可以使用reindex()。如果index列表中的元素多于序列的值,可用fill_value=0这样的语句填充。

s=s.reindex(['D','C','B','A'])

如果index列表中的元素多于序列的值,可用fill_value=0这样的语句填充。

s=s.reindex(['D','C','B','A'], fill_value=0)


19.2.2 DataFrame

DataFrame(数据框架)用于存储多行和多列的数据集合。它是Series的容器,类似于Excel中二维表格。

定义一个DataFrame的语法格式如下:

df=DataFrame({列名1 : 序列1,列名2 : 序列2,.......列名n : 序列n}, index=序列 )

例如,有如下二维表:



姓名

性别

年龄



张三

18



李四

19



王五

17







保存到DataFrame中可以用如下方法:

from pandas import Series

from pandas import DataFrame

name=Series(['张三','李四','王五'])

sex=Series(['男','女','男'])

age=Series([18,19,17])

df=DataFrame({'姓名':name,'性别':sex,'年龄':age})

print(df)

运行结果:

姓名 性别 年龄

0 张三 男 18

1 李四 女 19

2 王五 男 17

从上例可以看出,虽然我们省缺了索引,但系统自动添加了从0开始的索引值。


19.3 DataFrame的基本操作

1、访问方式

(1)获取行

print(df[1:2]) # 获取第1行的值

输出结果:

姓名 性别 年龄

1 李四 女 19

print(df[1:3]) #获取第1行到第2行的值

输出结果:

姓名 性别 年龄

1 李四 女 19

2 王五 男 17

(2)获取列

print(df['姓名']) #获取“姓名”列的值

输出结果:

0 张三

1 李四

2 王五

Name: 姓名, dtype: object

另一种方法:

print(df[df.columns[0:1]]) #先按照索引号获取列名,再按照列名读取

输出结果和上面的方法完全一致。

还有一种情况,是获取唯一值,即将列内的重复值中多余的删除,仅留下互不相同的值。所用的到方法是unique()。

sex1=Series(df['性别'].unique())

print(sex1)

输出结果:

0 男

1 女

dtype: object

(3)获取指定位置的值

print(df.at[1,'姓名']) # 格式为变量名.at[行号,列名]

输出结果:

李四

(4)获取块的值

print(df.iloc[0:2,1:3]) # 格式为变量名.iloc[行号1:行号2, 列号1:列号2]

输出结果:

性别 年龄

0 男 18

1 女 19

print(df.iloc[:,1:2]) #获取“性别”列的值

运行结果:

性别

0 男

1 女

2 男

2、修改、删除、增加行和列

(1)修改列名

print(df.columns)

df.columns=['name','sex','age']

print(df.columns)

输出结果:

Index(['姓名', '性别', '年龄'], dtype='object')

Index(['name', 'sex', 'age'], dtype='object')

可见,列名已经由“姓名、性别、年龄”修改为“age、sex、age”了。但这种修改必须把全部列名都一一列举,不能有遗漏,否则就会出错。如:

df.columns=['name','sex']

此时会报错:ValueError: Length mismatch: Expected axis has 3 elements, new values have 2 elements。

(2)修改行索引

df.index=[1,2,3]

(3)删除行

df.drop(1,axis=0) # axis=0表示行轴,也可以省略

(4)删除列

df.drop(‘性别’,axis=1) # axis=0表示列轴

也可以使用另一种方法:

del df['性别']

(5)增加列

df['电话']=['1111111','2222222','3333333']

print(df)

运行结果:

姓名 性别 年龄 电话

0 张三 男 18 1111111

1 李四 女 19 2222222

2 王五 男 17 3333333

(6)增加行

df.loc[len(df)]=['孙六','男','20']

(7)追加

from pandas import Series

from pandas import DataFrame

name=Series(['张三','李四','王五'])

sex=Series(['男','女','男'])

age=Series([18,19,17])

df=DataFrame({'姓名':name,'性别':sex,'年龄':age}) # 建立DataFrame,变量名为df

name1=Series(['孙六','候七'])

sex1=Series(['男','女'])

age1=Series([19,17])

df1=DataFrame({'姓名':name1,'性别':sex1,'年龄':age1})

# 建立DataFrame,变量名为df1

df=df.append(df1,ignore_index=True)

# 将对df1追加到df后面,参数ignore_index=True表示重新索引

print(df)

运行结果:

姓名 性别 年龄

0 张三 男 18

1 李四 女 19

2 王五 男 17

3 孙六 男 19

4 候七 女 17

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
交通事故致人死亡,该如何处理? 爱普生LQ1600KIIIH 断色带 爱普生针式打印机LQ1600KⅢH近两月来总频繁中断打印,同时电脑显示是通讯... ACQUA DI PARMA 帕尔玛之水 蓝色地中海系列 桃金娘加州桂中性淡香水 E... 女士香水推荐-ACQUA DI PARMA 帕尔玛之水 优雅木兰女士浓香水 EDP 50... ACQUA DI PARMA帕尔玛之水克罗尼亚系列中性香水套装-适用对象 帕尔玛 | 必须拥有的小众沙龙香 ACQUA DI PARMA/帕尔玛之水克罗尼亚系列黑调男士古龙水-适用对象 ACQUA DI PARMA 帕尔玛之水 克罗尼亚系列 风度中性古龙水 EDC 20ml... ACQUA DI PARMA/帕尔玛之水-绅士男士古龙水EDC 两个人月入一万,你感觉在北京能过什么样的生活? 在北京工作买不起房,回老家找不到工作,该怎么办? 在北京工作,但不是北京户口,如何办理社保求助 求超市相关的单词,带音标,谢谢。 谁有北京爱情故事中“我在北京,你在纽约……你的专职爱人”的完整段落? 我的银行卡怎么绑定别人的?步骤? 粘合剂还是黏合剂 粘合剂还是黏合剂有区别吗 简答题 简述放射免疫的基本原理 超级猜图女演员,3个字 万能遥控器设置教程 快来看看吧 【盘龙区资质代办】注册自己的物流公司要注意的地方有哪些 【高新区资质代办】注册自己的物流公司要注意的地方有哪些 【安宁资质代办】注册自己的物流公司要注意的地方有哪些 【经开区资质代办】注册自己的物流公司要注意的地方有哪些 【呈贡资质代办】注册自己的物流公司要注意的地方有哪些 睿觅的头盔怎么样 睿觅头盔怎么样 rymic头盔镜片有日夜通用镜片吗 大兴安岭嘎仙洞石屋是古代哪个民族的发源地 森林防火活动策划方案 森的词语是什么? blindman's buff是什么意思 山东哪里有赛车场? 杜禹彤和杜禹萱那个名字好? 关于爱情的好笑谐音梗适合情侣【荐】 怎么在163邮箱里制作excelbi表格 想自己开车从抚顺去呼伦贝尔大草原怎么走?两个人的费用多少? 从抚顺至呼伦比尔行车路线 抚顺到内蒙古牙克石公路 从辽宁丹东市至呼伦贝尔自驾路线怎么走 鸣叫声属于什么功能生物中 鸣唱是占区鸟类用于划分和保卫领域,宣告此地已被占据,鸟儿是如何鸣叫的? 下列属于行为信息的是1孔雀开屏2荧火虫发光3鸟类的鸣叫声 下列哪种动物行为不属于动物个体间的信息交流?(  )A.工蜂的舞蹈动作B.鸟类的各种鸣叫声C.工蚁能 西幻小说推荐 realize 中文拼音 2020微博经典心情说说带图片 微博伤感的句子说说心情带图片:你还欠我幸福 法律里面的"借"和"贷"分别是什么意思? 我想问一下音跃球球没有声音怎么办?