导入需要的库
import numpy as np
import pandas as pd
练习1
读取北向.csv 指定 trade_date 为 行索引
bei=pd.read_csv(r'北向.csv',index_col=1)
查看数据的基本信息 有无缺失值 对其缺失值进行处理
bei.info()
bei.isnull().sum()
index 0
ggt_ss 34
ggt_sz 34
hgt 14
sgt 14
north_money 0
south_money 0
dtype: int64
删除缺失值所在行
bei.dropna(inplace=True)
查看数据的基本信息 查看数据是否清洗完毕
bei.info()
bei.isnull().sum()
index 0
ggt_ss 0
ggt_sz 0
hgt 0
sgt 0
north_money 0
south_money 0
dtype: int64
标签为 index 这列没啥用 将该列删除
del bei['index']
观察数据是否有重复行
bei.duplicated()
将重复行进行删除
bei.drop_duplicates(inplace=True)
将行索引 进行升序
bei.sort_index()
将处理好的数据保存至 北向(副).csv
bei.to_csv(r'北向(副).csv')
练习2
读取数据
food=pd.read_csv(r'FoodFacts.csv')
查看国家和添加剂用量两列是否有缺失值
food[['countries_en','additives_n']].isnull().sum()
countries_en 211
additives_n 21839
dtype: int64
将两列中存在缺失值的行删除
food.dropna(subset=['countries_en','additives_n'],inplace=True)
查看countries_en中每个分类的数值分布
food['countries_en'].value_counts()
发现countries_en列数据中存在太多干扰字符,不方便后续的统计,将干扰字符存在的行舍去
# 使用~进行取反,舍去数据中含有,或:或%的
food_f=food[~food['countries_en'].str.contains(',|:|%')]
# 保留了83个国家
len(food_f['countries_en'].unique())
生成清洗完后countries_en列中所有国家的列表
# unique去除重复元素
li=list(food_f['countries_en'].unique())
定义一个列表添加每个国家对应使用过的添加剂用量总和
list_a=[]
for i in li:
total=food_f[food_f.countries_en.isin([i])].additives_n.sum()
list_a.append(total)
print(list_a)
字典推导式将国家与添加剂用量一一对应
dic={k:v for k,v in zip(li,list_a)}
生成DataFrame
con=pd.DataFrame([dic])
conn=con.T
conn.columns=['total']
保存统计结果
conn.to_excel(r'food_total.xlsx')