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

软工211-439-钱哲玮 2023-春-学生 2023-06-28 20:16:21

作业要求

  1.    [基础要求]  基于Jupyter Notebook 完成以下实验一、实验二、实验三;
  2.    [重点要求]  修改以下示例代码,以测试不同知识点。在博客上写出你:
  •  修改的代码、
  •  修改的愿意(意图)
  •  代码运行的结果
  •  你的结论

实验一:Series对象的应用

实验要求:

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

实验源码:

  1. import pandas as pd
  2. import matplotlib.pyplot as plt
  3.  
  4. # 实验一
  5.  
  6. s = pd.Series([10, 20, 30, 40, 50])
  7. # s = pd.Series(['abbb', 20, 30, 40, 50])
  8. print(s[0])
  9. print(s)
  10. # print(s[-1])
  11. print(s[0: 5])
  12. s[0] = 11
  13. print(s[0])
  14.  
  15. print('求和', s.sum())
  16. print('求平均', s.mean())
  17. print('求最大值', s.max())
  18. print('求最小值', s.min())

 代码执行结果: 

 

代码修改及意图:(1)对Series对象生成的数组填充不同类型的数据,观察其是否能存储不同类型的数据;

                             (2)打印s[-1],观察它与Python中的列表的区别;

                             (3)对生成的数组进行求和、求平均、求最大值和最小值。

结论:有Series对象生成的数组,它与Python中的列表相似和不同支持,首先是Series对象生成的数组不支持反向索引,及无法使用s[-1]来获取数组中的最后一个元素;它与列表一样,均可以使用切片的方式来获得数组片段;Series对象生成的数组有许多内置函数,来进行数据处理。

实验二:DataFrame对象的应用

实验要求:

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

 实验源码:

 

  1. import pandas as pd
  2. import matplotlib.pyplot as plt
  3. data = {
  4.     'int_col': [1, 2, 3, 4, 5],
  5.     'float_col': [1.2, 1.3, 1.4, 1.5, 1.6],
  6.     'str_col': ['a', 'b', 'c', 'd', 'e']
  7. }
  8. df = pd.DataFrame(data)
  9. print(df)
  10. df.loc[0, 'int_col'] = 3
  11. print(df)
  12. print(df.sum())
  13. print(df.mean(numeric_only=True))

 代码执行结果:

 代码修改及其意图:(1)在求平均值时,将代码修改为  print(df.mean(numeric_only=True))  ,因为df.mean()方法只能求数值型数据的平均值,不能求字符串或者其他非数值型数据的平均值,所以要使用 numeric_only = True 来使它只求数据数值型的列的平局值。

结论:pandas中的DataFrame() 方法可以将字典(列表)生成矩阵的形式,从而能够使对数据的操作更加方便。有DataFrame()生成的数据结构,每一行和每一                 列都有相应的行和列的名称,可以通过同时使用行和列的名称来获取相应的数据。在使用该数据结果求行(列)平均值时,一定要保证该行(列)中的所有                 元素均为数值型数据。

实验三:综合实例

实验要求:

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

实验源码:

 

  1. import pandas as pd

  2. import matplotlib.pyplot as plt

  3. data = {

  4. 'city': ['beijing', 'shanghai', 'guangzhou', 'shenzhen'],

  5. 'population': [2171, 2424, 1500, 1303],

  6. 'gdp': [20000, 30000, 19002, 19990],

  7. 'area': [16410, 6340, 7434, 1996]

  8. }

  9. df = pd.DataFrame(data)

  10. print(df)

  11. pop_rank = df['population'].rank(ascending=False)

  12. gdp_rank = df['gdp'].rank(ascending=False)

  13. area_rank = df['area'].rank(ascending=False)

  14. print(pop_rank)

  15. print(gdp_rank)

  16. print(area_rank)

  17. ax = df.plot(kind='bar', x='city', y=['population', 'gdp', 'area'], title='China Capital Cities')

  18. plt.show()

代码执行结果:

 

 代码修改及其意图:我将data字典中城市的名称由中文全部改为了字母拼音,为了使城市的名称能够展示在数据统计图的 X 轴上,必须得使用英文字母。

结论:pandas库可以很方便的对矩阵中的每一列(行)中的数据进行按照升序(降序)来排列;matplotlib库能够将pandas库中生成的矩阵的每一列进行数据统计,并生成相应的数据统计图。

 

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

163

社区成员

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

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