数据读取和写入
pandas
构造DataFrame的方式:
import pandas as pd
pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]],index=['a','b','c'],columns=['A','B','C'])
2.pd.DataFrame('A':[1,2,3],'B':[4,5,6],'C':[7,8,9])
data={'Name':["A","B","C","D"],'Location':["New York","Paris","London","Berlin"],'Age':[24,13,53,33]}
pd.DataFrame(data)
IPython.diaplay :打印出“美观的”DataFrame
import pandas as pd
from IPython.display import display
data={'Name':["A","B","C","D"],'Location':["New York","Paris","London","Berlin"],'Age':[24,13,53,33]}
data_pandas=pd.DataFrame(data)
display(data_pandas)
筛选:选择年龄大于30的所有行
display(data_pandas[data_pandas.Age>30])
数据清洗
数据清洗:即发现并纠正数据文件中可识别错误,清理影响数据质量的”脏数据“。脏数据在这里是指对数据分析没有实际意义、格式非法、不在指定范围内的数据。
脏数据:空缺值、重复值、异常值
一、 空缺值的处理
python中一般用None和NaN表示空缺值
1.isnull()和nonull()函数判断是否存在空缺值
2.dropna()的作用是过滤有空缺值的行或列
3.fillna()的作用是对空缺值进行填充
1.判断空缺值
isnull()和nonull()函数判断是否存在空缺值
isnull()
nonull()
2.过滤含有空缺值的行或列
dropna()的作用是过滤有空缺值的行或列
dropna(axis=0,how='any',thresh=None,subset=None,inplace=False)
参数:
参数 | 意义 |
---|---|
axis | 过滤行或列 行:0/index 列:1/columns |
how | 过滤的标准 any:默认 删除全是缺失的行(列) all:删除只要含有缺失值的行(列) |
thresh | 保留至少含有n个非NAN数值的行 |
subset | 删除指定行(列)空值数据 |
inplace | 是否用新生成的列表替换原列表 |
删除第一行空值数据
import pandas as pd
import numpy as np
df_obj=pd.DataFrame([[1,2,1],[2,np.NAN,4],[np.NAN,4,np.NAN]])
print(df_obj)
df_obj.dropna(axis=0,subset=[1])
结果
删除有空缺值的行
df_obj.dropna(axis=0)
结果:
删除有空缺值的列
df_obj.dropna(axis=1)
对空缺值进行填充
fillna()的作用是对空缺值进行填充
fillna(value=None,method=None,axis=None,inplace=False,limit=None)
参数 | 意义 |
---|---|
value | 指定固定值填充至空缺值位置 |
method | 表示填充方式,默认值为None “ffill" :前项填充 ”bfill":后项填充 |
用0填充空缺值
df_obj.fillna(value=0)
结果
前项填充
df_obj.fillna(method='ffill')
结果
二、重复值的处理
duplicated() 方法的语法格式:
是重复项,则返回True
duplicated(subset=None,keep="first")
drop_duplicated() 方法的语法格式:
drop_duplicates(subset=None,keep="first",inplace=False)
参数 | 意义 |
---|---|
subset | 用于识别重复的行(列) 默认:行 |
keep | first:删除重复项并保留第一次出现的项 还有last或False |
import pandas as pd
import numpy as np
df_obj=pd.DataFrame([[1,2,3],[1,2,3],[2,3,4]])
print(df_obj)
df_obj.duplicated(keep='last')
结果
因为第一行和第二行重复,且保留第二行,所以第一行为确定重复(True),要删除。
df_obj.drop_duplicates(keep='last')
结果
三、异常值处理
1.将含有异常值的样本删除
2.用具体值替换
3.视为空缺值
4.不处理