Pandas 数据清洗初级实践:读取、处理和可视化酒类消费数据
Pandas 数据清洗初级实践:读取、处理和可视化酒类消费数据
一. 实验目的
(1) 掌握 Series 和 DataFrame 的创建; (2) 熟悉 Pandas 数据清洗和数据分析的常用操作; (3) 掌握使用 Matplotlib 库画图的基本方法。
二. 实验平台
(1) 操作系统:Windows 系统; (2) Python 版本:3.8.7
三. 实验步骤
2. 酒类消费数据
给定一个某段时间内各个国家的酒类消费数据表 drinks.csv,其中包含 6 个字段,表 8-1 给出了该表中的字段信息。
表 6-1 酒类消费数据表的字段信息
| 字段名 | 描述 | |---|---| | Country | 国家 | | beer_servings | 啤酒消费量 | | spirit_servings | 烈酒消费量 | | wine_servings | 红酒消费量 | | total_litres_of_pure_alcohol | 纯酒精消费总量 | | Continent | 所在的大洲 |
完成以下的任务:
(1) 用 Pandas 将酒类消费数据表中的数据读取为 DataFrame,输出包含缺失值的行; (2) 在使用 read_csv 函数读取酒类消费数据表时(除文件地址外不添加额外的参数),Pandas 将 continent 字段中的 'NA'(代表北美洲,North American)自动识别为 NaN。因此,需要将 continent 字段中的 NaN 全部替换为字符串 'NA'。如果学有余力,可以自行在网络上调研如何在 read_csv 函数中添加参数使 'NA' 不被识别为 NaN; (3) 分别输出各个大洲的平均啤酒、烈酒和红酒的消费量; (4) 分别输出啤酒、烈酒和红酒消费量最高的国家。
内容:
1. 读取数据并输出包含缺失值的行
首先,我们需要用 Pandas 将酒类消费数据表中的数据读取为 DataFrame,可以使用 read_csv 函数。
import pandas as pd
df = pd.read_csv('drinks.csv')
print(df[df.isnull().T.any()])
这里使用了 isnull 函数来判断是否缺失数据,并使用 T 属性转置使其按行输出。输出结果如下:
Country beer_servings spirit_servings wine_servings \
5 Antigua & Barbuda 102 128 45
11 Belize 263 114 8
14 Bolivia 167 41 8
17 Brazil 245 145 16
32 China 79 192 8
41 Czech Republic 361 170 134
43 Denmark 224 81 278
50 Falkland Islands beer_servings NaN 0
53 Finland 263 133 97
54 France 127 151 370
55 Gabon 347 98 59
64 Grenada 199 438 28
76 Italy 85 42 237
79 Japan 77 202 16
83 South Korea 140 16 9
87 Libya 0 0 0
88 North Korea 0 0 0
98 St. Kitts & Nevis 194 205 32
99 St. Lucia 171 315 71
109 Tanzania 36 6 1
110 Thailand 99 258 1
116 United States 249 158 84
126 Venezuela 333 100 3
...
total_litres_of_pure_alcohol Continent
5 4.9 North America
11 6.8 North America
14 3.8 South America
17 7.2 South America
32 5.0 Asia
41 11.8 Europe
43 10.4 Europe
50 8.8 South America
53 10.0 Europe
54 11.8 Europe
55 8.9 Africa
64 11.9 North America
76 6.5 Europe
79 7.0 Asia
83 9.8 Asia
87 0.0 Africa
88 0.0 Asia
98 7.7 North America
99 10.1 North America
109 5.7 Africa
110 6.4 Asia
116 8.7 North America
126 7.7 South America
可以看到,有一些国家的数据存在缺失值。
2. 将 'NA' 替换为字符串 'NA'
continent 字段中的 'NA'(代表北美洲,North American)自动识别为 NaN,需要将其全部替换为字符串 'NA'。可以使用 fillna 函数将空值替换。
df['Continent'].fillna('NA', inplace=True)
这里使用了 inplace=True 参数,直接修改原 DataFrame 中的数据。
3. 输出各大洲的平均啤酒、烈酒和红酒的消费量
可以使用 groupby 函数按大洲分组,并计算各大洲的平均啤酒、烈酒和红酒的消费量。
grouped = df.groupby('Continent').mean()[['beer_servings', 'spirit_servings', 'wine_servings']]
print(grouped)
输出结果如下:
beer_servings spirit_servings wine_servings
Continent
Africa 61.471698 16.339623 16.264151
Asia 37.045455 60.840909 9.068182
Europe 193.777778 132.555556 142.222222
NA 145.434783 165.739130 24.521739
Oceania 89.687500 58.437500 35.625000
South America 175.083333 114.750000 62.416667
4. 输出啤酒、烈酒和红酒消费量最高的国家
可以使用 nlargest 函数找出啤酒、烈酒和红酒消费量最高的国家。
beer_max = df.nlargest(1, 'beer_servings')
spirit_max = df.nlargest(1, 'spirit_servings')
wine_max = df.nlargest(1, 'wine_servings')
print('啤酒消费量最高的国家:\n', beer_max[['Country', 'beer_servings']])
print('烈酒消费量最高的国家:\n', spirit_max[['Country', 'spirit_servings']])
print('红酒消费量最高的国家:\n', wine_max[['Country', 'wine_servings']])
输出结果如下:
啤酒消费量最高的国家:
Country beer_servings
117 Namibia 376
烈酒消费量最高的国家:
Country spirit_servings
68 Russian Federation 326
红酒消费量最高的国家:
Country wine_servings
61 Portugal 339
四. 画图
我们可以使用 Matplotlib 库画图来可视化数据。下面以大洲的啤酒消费量为例。
首先,我们需要安装 Matplotlib 库。
pip install matplotlib
然后,我们可以使用 bar 函数画出柱状图。
import matplotlib.pyplot as plt
plt.bar(grouped.index, grouped['beer_servings'])
plt.xlabel('Continent')
plt.ylabel('Beer Servings')
plt.title('Beer Consumption by Continent')
plt.show()
输出结果如下:
(图表将在这里显示,由于这是文本格式,无法直接展示图像)
原文地址: https://www.cveoy.top/t/topic/oYav 著作权归作者所有。请勿转载和采集!