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

作业要求

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

实验一: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对象中的数据类型变为多个类型数据混合;
  • import pandas as pd
    
    # 定义一个Series对象
    s = pd.Series(['hello', 20, 30, 40, 50])
    
    # 访问Series对象中的数据
    print(s[0])  # 输出第一个元素
    print(s[2:4])  # 输出第3个到第4个元素
    
    # 修改Series对象中的数据
    s[1] = [2,3,5]
    
    # 打印Series对象
    print(s)
    
    
  • 修改意图:测试Pandas中对于混合类型的Series对象的处理能力;
  • 代码运行的结果:成功创建一个包含整数和字符串类型的Series对象,并对其进行了访问、修改加入列表型操作;
  • 我的结论:Pandas可以处理混合类型的Series对象。

实验二: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())  # 求平均值

修改代码:将str_col表示的字符列表变换成字符串,去掉修改对象数据中的列索引只保留行索引

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': 'defef'}
df = pd.DataFrame(data)

# 访问DataFrame对象中的数据
print(df['int_col'][0])  # 输出第一行第一列的数据
print(df.loc[1, 'str_col'])  # 输出第二行第三列的数据
print(df)
# 修改DataFrame对象中的数据
df.loc[ 'float_col'] = 1
print(df)
# 对DataFrame对象进行计算
print(df.sum())  # 求和
print(df.mean())  # 求平均值
  • 修改意图:测试Pandas中DataFrame对象对于字符串的处理,测试当修改对象中列索引为空时DataFrame对象如何执行修改操作;
  • 代码运行的结果:成功创建一个包含整数和字符串类型的DataFrame对象,并将字符串转变成了每一行都是字符串,修改对象在列索引为空的情况下,也是直接默认为修改列索引的最后一位;
  • 我的结论:DataFrame对象可以很好的处理索引缺失、对象不为列表的情况。

实验三:综合实例

实验要求:

  • 定义一个包含省会城市、人口、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()

修改代码:修改了画图部分的代码,新增了对横坐标字体和大小的要求;

import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties

# 定义一个包含省会城市、人口、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')

# 自定义横坐标为城市名称,字体为宋体
font = FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=14)
plt.xticks(fontproperties=font)

plt.show()
  • 修改意图:原先横坐标的城市名称不能正常输出,修改代码实现横坐标的正常显示;
  • 代码运行的结果:横坐标的城市名称能正常输出;
  • 我的结论:熟悉了matplotlib.pyplot进行画图
阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_68635857

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值