2023(春)Python程序设计作业5:Pandas基础技能及综合应用

软工212李靖翔 2023-春-学生 2023-05-26 13:56:22

实验一:Series对象的应用

实验要求:

  • 定义一个Series对象,包含5个整数数据;
  • 访问、修改Series对象中的数据;
  • 打印Series对象;
  • 对Series对象进行计算,如求和、求平均值等;

示例代码:

import pandas as pd
 
 
# 定义一个Series对象
s = pd.Series([10, 20, 30, 40, 50])
 
 
# 访问Series对象中的数据
print(s[0])    # 输出第一个元素
print(s[2:4])  # 输出第3个到第4个元素
 
 
# 修改Series对象中的数据
s[1] = 25
 
 
# 打印Series对象
print(s)
 
 
# 对Series对象进行计算
print(s.sum())  # 求和
print(s.mean())  # 求平均值

  • 修改代码:增加一个字符串类型的数据,将Series对象中的数据类型变为混合类型;
  • 修改意图:测试Pandas中对于混合类型的Series对象的处理能力;
  • 代码运行的结果:成功创建一个包含整数和字符串类型的Series对象,并对其进行了访问、修改和计算操作;
  • 我的结论:Pandas能够很好地处理混合类型的Series对象,可以对其进行与数值类型相同的操作。

修改后的代码:

import pandas as pd
# 定义一个Series对象
s = pd.Series([10, 20, 30, 40, 50])
# 定义一个Series对象
m = pd.Series([60, 70, 80, 90, 100, 110, 120])
# 访问Series对象中的数据
print(s[0])  # 输出第一个元素
print(s[2:4])  # 输出第3个到第4个元素
# 修改Series对象中的数据
s[1] = 25
# 打印Series对象
print(s)
# 对Series对象进行计算
print(s.sum())  # 求和
print(s.mean())  # 求平均值
# 筛选出小于40的元素
print("Elements < 40:", s[s < 40])
# 将对象s和m中的元素相加
print(s.add(m, fill_value=0))
# 判断对象s第三到第四个元素是否为空
notnull = pd.notnull(s[2:5])
print(notnull)

 

实验二:DataFrame对象的应用

实验要求:

  • 定义一个DataFrame对象,包含3个列,每列分别为整数、浮点数和字符串类型;
  • 访问、修改DataFrame对象中的数据;
  • 对DataFrame对象进行计算,如求和、求平均值等。

示例代码:

import pandas as pd
# 定义一个DataFrame对象
data = {'int_col': [1, 2, 3, 4, 5], 'float_col': [1.2, 2.3, 3.4, 4.5, 5.6], 'str_col': ['a', 'b', 'c', 'd', 'e']}
df = pd.DataFrame(data)
# 访问DataFrame对象中的数据
print(df['int_col'][0]) # 输出第一行第一列的数据
print(df.loc[1, 'str_col']) # 输出第二行第三列的数据
# 修改DataFrame对象中的数据
df.loc[2, 'float_col'] = 3.5
# 对DataFrame对象进行计算
print(df.sum()) # 求和
print(df.mean()) # 求平均值

 修改意图:

  1. 在DataFrame对象中增加一列‘xyz’
  2. 输出新添加的列中的最大值和最小值

修改后代码:

import pandas as pd
# 定义一个DataFrame对象
data = {'int_col': [1, 2, 3, 4, 5], 'float_col': [1.2, 2.3, 3.4, 4.5, 5.6], 'str_col': ['a', 'b', 'c', 'd', 'e']}
df = pd.DataFrame(data)
# 访问DataFrame对象中的数据
print(df['int_col'][0])  # 输出第一行第一列的数据
print(df.loc[1, 'str_col'])  # 输出第二行第三列的数据
# 修改DataFrame对象中的数据
df.loc[2, 'float_col'] = 3.5
# 对DataFrame对象进行计算
print(df.sum())  # 求和
print(df['int_col'].mean())
print(df['float_col'].mean())  # 求平均值
# 在DataFrame对象中增加一列
df['xyz'] = [2, 4, 6, 1, 3]
 
print(df['xyz'].max())    # 输出最大值
print(df['xyz'].min())    # 输出最小值

实验三:综合实例

实验要求:

  • 定义一个包含省会城市、人口、GDP、城市面积的DataFrame对象;
  • 计算各种排名,如人口最多的城市、GDP最高的城市等;
  • 使用Pandas绘图,可视化上述实验结果。

示例代码:

import pandas as pd
import matplotlib.pyplot as plt
 
# 定义一个包含省会城市、人口、GDP、城市面积的DataFrame对象
data = {'city': ['北京', '上海', '广州', '深圳'], 'population': [2171, 2424, 1500, 1303], 
        'gdp': [30320, 32679, 20353, 22458], 'area': [16410, 6340, 7434, 1996]}
df = pd.DataFrame(data)
 
# 计算各种排名
pop_rank = df['population'].rank(ascending=False)
gdp_rank = df['gdp'].rank(ascending=False)
area_rank = df['area'].rank(ascending=False)
 
# 将排名添加到DataFrame对象中
df['pop_rank'] = pop_rank
df['gdp_rank'] = gdp_rank
df['area_rank'] = area_rank
 
# 使用Pandas绘图,可视化实验结果
df.plot(kind='bar', x='city', y=['population', 'gdp', 'area'], title='China Capital Cities')
plt.show()
  • 修改代码:增加一个新的列,包含省份名称信息,以测试Pandas中对于多列数据的处理能力;
  • 修改意图:测试Pandas中对于多列数据的处理能力以及数据透视表的应用;
  • 代码运行的结果:成功创建一个包含省会城市、人口、GDP、城市面积和省份名称的DataFrame对象,并对其进行了访问、修改、计算和数据透视表操作;
  • 我的结论:Pandas能够很好地处理多列数据,并支持数据透视表的应用,可以方便地对数据进行汇总、分组和分析。

 

import pandas as pd
import matplotlib.pyplot as plt
 
#定义一个包含省会城市、人口、GDP、城市面积和省份名称的DataFrame对象
data = {'province': ['北京市', '上海市', '广东省', '广东省', '广东省', '深圳市'],'city':['北京', '上海', '广州', '深圳', '佛山', '深圳'],'population': [2171, 2424, 1500, 1303, 740, 1303],'gdp': [30320, 32679, 20353, 22458, 8514, 22458],'area': [16410, 6340, 7434, 1996, 3257, 1996]}
 
df = pd.DataFrame(data)
 
#计算各种排名
pop_rank = df['population'].rank(ascending=False)
gdp_rank = df['gdp'].rank(ascending=False)
area_rank = df['area'].rank(ascending=False)
 
#将排名添加到DataFrame对象中
df['pop_rank']= pop_rank
df['gdp_rank'] = gdp_rank
df['area_rank'] = area_rank
 
#使用数据透视表,按省份汇总数据
pivot_table = pd.pivot_table(df, values=['population', 'gdp', 'area'], index=['province'], aggfunc='sum')
 
#使用Pandas绘图,可视化实验结果
pivot_table.plot(kind='bar', title='China Capital Cities')
 
plt.show()
 

...全文
21 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

163

社区成员

发帖
与我相关
我的任务
社区描述
软件工程老师
python 高校 江苏省·南通市
社区管理员
  • juking@ntu
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧