目录
1.清洗空值
import pandas as pd import numpy as np data = pd.DataFrame({'姓名':['kun','鸡哥','华哥','凡哥'],'年龄':[23,5,3,42],'爱好':['篮球','街舞','王者','吃'],'地址':[np.nan,'广东','厦门',np.nan]}) data --------------- 姓名 年龄 爱好 地址 0 kun 23 篮球 NaN 1 鸡哥 5 街舞 广东 2 华哥 3 王者 厦门 3 凡哥 42 吃 NaN
删一行或列
如果我们要删除包含空字段的行,可以使用 dropna() 方法,语法格式如下:
data.dropna(axis="index", how="any",inplace=False)
#删除空字段的 行. data.dropna(axis='index',how='any',inplace=True) print(data) ----------- 姓名 年龄 爱好 地址 1 鸡哥 5 街舞 广东 2 华哥 3 王者 厦门
检测某一列是否为空值.
#检测某一列是否为空值. data['地址'] print(data['地址'].isnull()) ---------------- 0 True 1 False 2 False 3 True Name: 地址, dtype: bool
自定义空值类型
#自定义空值类型.--->NaN miss_value = ['--',18] data2 = pd.read_csv('student.csv',na_values=miss_value) # data2.dropna(axis='index',how='any',inplace=True) print(data2)
移除某一类带空值的行
#移除某一类带空值的 行. data2.dropna(subset=['age'],inplace=True) print(data2)
使用某个值进行填充
-
替换空单元格的常用方法是计算列的均值、中位数值或众数
mean()、median(),mode()
。
#填充全部. # data2.fillna(0,inplace=True) # data2 #填充某列. data2['age'].fillna(data2['age'].mean(),inplace=True) data2
2.清洗格式有误
日期格式有误
--自动修改.
data = { "Date": ['2020/12/01', '2020/12/02' , '20201226'], "salary": [5000, 4000, 45000] } df_data = pd.DataFrame(data, index = ["day1", "day2", "day3"]) print(df_data) df_data["Date"] = pd.to_datetime(df_data["Date"]) df_data ----------- Date salary day1 2020-12-01 5000 day2 2020-12-02 4000 day3 2020-12-26 45000
错误数据
# 单个修改 df_data.loc["day3","salary"] = 4500 df_data
# 批量修改 for data in df_data.index: if df_data.loc[data,"salary"] > 10000: df_data.loc[data,"salary"] = df_data.loc[data,"salary"] / 10 df_data
3.清洗重复值(drop_)duplicates
df_data = pd.DataFrame({ "name":["苹果","华为","苹果","小米"], "price":[1000,1200,1000,800] }) # df_data # 检测重复值 df_data.duplicated() # 删除重复值 df_data.drop_duplicates(inplace=True) df_data