ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python数据分析:pandas数据操作和分析案例

2021-07-01 21:01:24  阅读:248  来源: 互联网

标签:数据分析 zip filepath Python countries dataset path data pandas


# Python数据分析:pandas数据操作和分析案例

###### 项目介绍:

* [ https://www.kaggle.com/openfoodfacts/world-food-facts ](https://www.kaggle.com/openfoodfacts/world-food-facts)

###### 项目任务:

* 统计各个国家食物中的食品添加剂种类个数

```code
import zipfile
import os
import pandas as pd
import matplotlib.pyplot as plt


def unzip(zip_filepath, dest_path):
"""
解压zip文件
"""
with zipfile.ZipFile(zip_filepath) as zf:
zf.extractall(path=dest_path)


def get_dataset_filename(zip_filepath):
"""
获取数据库文件名
"""
with zipfile.ZipFile(zip_filepath) as zf:
return zf.namelist()[0]


def main():
"""
主函数
"""
# 声明变量
dataset_path = './data' # 数据集路径
zip_filename = 'open-food-facts.zip' # zip文件名
zip_filepath = os.path.join(dataset_path, zip_filename) # zip文件路径
dataset_filename = get_dataset_filename(zip_filepath) # 数据集文件名(在zip中)
dataset_filepath = os.path.join(dataset_path, dataset_filename) # 数据集文件路径

print('解压zip...', end='')
unzip(zip_filepath, dataset_path)
print('完成.')

# 读取数据
data = pd.read_csv(dataset_filepath, usecols=['countries_en', 'additives_n'])

# 分析各国家食物中的食品添加剂种类个数
# 1. 数据清理
# 去除缺失数据
data = data.dropna()

# 原csv文件中的countries_en中的数字并不是单独的国家名,有部分是多个国家名用逗号隔开,因此需要将这些多个值的数据拆分成多个行的记录
data = data.drop('countries_en',axis=1).join(data['countries_en'].str.split(',',expand=True).stack().reset_index(level=1, drop=True).rename('countries_en'))
# 将国家名称转换为小写
data['countries_en'] = data['countries_en'].str.lower()

# 2. 数据分组统计
country_additives = data['additives_n'].groupby(data['countries_en']).mean()

# 3. 按值从大到小排序
result = country_additives.sort_values(ascending=False)

# 4. pandas可视化top10
result.iloc[:10].plot.bar()
plt.show()

# 5. 保存处理结果
result.to_csv('./country_additives.csv')

# 删除解压数据,清理空间
if os.path.exists(dataset_filepath):
os.remove(dataset_filepath)

if __name__ == '__main__':
main()
```

运行结果:
排名前十的柱状图:
![在这里插入图片描述](https://www.icode9.com/i/ll/?i=20190427141120886.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTc5MjY4Mg==,size_16,color_FFFFFF,t_70)
输出的csv文件:
![在这里插入图片描述](https://www.icode9.com/i/ll/?i=20190427141146914.jpg)


![在这里插入图片描述](https://www.icode9.com/i/ll/?i=20210608151750993.gif)

标签:数据分析,zip,filepath,Python,countries,dataset,path,data,pandas
来源: https://www.cnblogs.com/gc2770/p/14960730.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有