Pandas第3次作业

本篇博客介绍了使用Pandas对北向.csv数据进行处理,包括设置trade_date为行索引,删除缺失值行,移除无用列,去除重复行,并按行索引升序排列,最后保存至新文件。另外,对FoodFacts.csv数据进行了分析,统计了各国食品添加剂的平均使用,通过清洗数据,拆分国家名,统计每个国家的添加剂用量,并将结果保存为新的CSV文件。
摘要由CSDN通过智能技术生成

Pandas第3次作业

作业1

任务目标:

• 读取北向.csv 指定 trade_date 为 行索引
• 查看数据的基本信息 有无缺失值 对其缺失值进行处理
• 删除缺失值所在行
• 查看数据的基本信息 查看数据是否清洗完毕
• 标签为 index 这列没啥用 将该列删除
• 观察数据是否有重复行
• 将重复行进行删除
• 将行索引 进行升序
• 将处理好的数据 保存至 北向(副).csv
北向.csv数据文件下载

# -*- coding: utf-8 -*-
"""
Created on Fri Jan 29 10:58:57 2021

@author: 清弦墨客(聆听)
"""
import numpy as np
import pandas as pd

# 读取北向.csv,指定 trade_date为行索引
path = r"D:\Coding\Python\LogicCoding\Data Analyze\北向.csv"
df = pd.read_csv(path, index_col=1)
print(df.shape)

# 查看数据信息
print(df.info())

# 删除index这一列
del df["index"]

# 查看缺失值
print(pd.isnull(df))

# 删除缺失值所在行,默认axis=0,how='any'
df_new = df.dropna()
print(df_new.shape)
# 查看数据是否清洗完毕
print(df_new.info())

# 观察数据是否有重复的行
print(df_new.duplicated())
# 将重复行进行删除,默认保留首次出现的行
df_new = df_new.drop_duplicates()
print(df_new.shape)

# 使用行索引进行升序排列,默认为横轴,默认为升序
# sort_index(axis=0,ascending=True)
df_new = df_new.sort_index()
print(df_new)

# 将清洗后的数据保存到北向(副).csv文件中
path = r"D:\Coding\Python\LogicCoding\Data Analyze\北向(副).csv"
df_new.to_csv(path)

最终处理结果截图:
在这里插入图片描述

作业2

任务目标
读取 FoodFacts.csv 数据,该数据是全球食品数据,需分析每个国家添加剂的平均使用。
步骤分析
• 1.读取数据
• 2.数据质量考量
• 3.清洗数据
• 4.对各个国家的使用数量进行统计
• 4.1.清洗,统计国家数据
• 4.2.通过国家统计添加剂用量
• 5.保存统计结果
FoodFacts数据文件下载

# -*- coding: utf-8 -*-
"""
Created on Mon Feb  1 10:16:51 2021

@author: 清弦墨客(聆听)
"""
import numpy as np
import pandas as pd

# 用pandas读取csv文件
path = r"D:\Coding\Python\LogicCoding\Data Analyze\FoodFacts.csv"
df = pd.read_csv(path)
print(df.shape)
# 统计缺失值的数量
#print(pd.isnull(df).sum())

# 只取出“countries_en” 和 “additives_n”两列数据进行统计
# 方法一
df_food = pd.read_csv(path, usecols=["countries_en", "additives_n"])

# 方法二
#df_food = pd.DataFrame(list(zip(df["countries_en"], df["additives_n"])))
#print(df_food)

# 删除缺失值
df_food = df_food.dropna()
print(df_food.shape)

"""
# 在df_food中,的值并不是都只有一个国家,而是像下面这种情况
# Australia,New Zealand,Singapore,Thailand   1
# 这种数据形式为我们统计每个国家食品添加剂的使用情况设置了障碍
# 我们有理由相信,在这种统计情况下,这些国家都使用了相同剂量的添加剂。
# 那么在统计时,这样的数据是不能被随意丢弃的。
# 需要一个不重复的列表或字典,将所有国家食品添加剂的量初始化为0
"""
# 通过split()方法,可以将一行中所有的国家都分离出来
for countries in df_food["countries_en"]:
    if len(countries.split(",")) == 1:
        pass
    else:
        for country in countries.split(","):
            print(country, end=",")
        print()

# 修改上面的方法,得到一个不重复的所有国家的列表
country_names = []
for countries in df_food["countries_en"]:
    if len(countries.split(",")) == 1:
        if countries not in country_names:
            country_names.append(countries)
    else:
        for country in countries.split(","):
            if country not in country_names:
                country_names.append(country)
print(len(country_names))

# 得到了100个国家的名字 

# 利用字典的特性,统计每个国家的食品添加剂使用数量
additives = {}
# 初始化数量为0
for country_name in country_names:
    additives[country_name] = 0


for countries, amount in zip(df_food['countries_en'], df_food['additives_n']):
    if len(countries.split(",")) == 1:
        additives[countries] += amount
    else:
        for country in countries.split(","):
            additives[country] += amount

print(len(additives))

# 将字典转换为DataFrame ,并保存为文件
# 需要注意默认的保存方式键是作为列名保存,需要修改
df_additives = pd.DataFrame.from_dict(additives, orient='index',columns=['additives'])
df_additives = df_additives.reset_index().rename(columns = {'index':'country_name'})

# 保存为文件
path = r"D:\Coding\Python\LogicCoding\Data Analyze\FoodFacts(new).csv"
df_additives.to_csv(path)               
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

清弦墨客

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

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

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

打赏作者

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

抵扣说明:

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

余额充值