数据的读写
用pandas
- CSV格式
df=pd.read_csv('文件路径')
- excel格式
df=pd.read_excel('文件路径')
数据的探索与描述
用pandas读取数据后,都是datafram格式的数据
查看数据的行列数
df.shape
- 查看数据的概况
df.info()
- 对数据进行简单的统计描述
df.describe()
数据简单处理
- 去除数据间的空格
查看是否有空格
df.columns
提取列的名称
col=df.columns.values
列表推导式
df.columns=[x.strip() for x in col]
注:strip只能去除前后空格
- 英文字母大小写的转换
重复值的处理
- 寻找重复值
duplicated()
- 当两条记录中所有的数据都相等时duplicated函数才会判断为重复值
- duplicated支持从前向后(first),和从后向前(last)两种重复值查找模式
- 默认是从前向后进行重复值的查找和判断,也就是后面的条目在重复值判断中显示为True
df.duplicated().sum()#即对重复值进行统计
产看重复值
df[df.duplicated()]
- 删除重复记录
drop_duplicates(inplace=True)#inplace=True表示直接在源数据上进行操作
由于删除了原始数据,故需要对每一行数据前面的排列编号进行一次更新
df.index=range(df.shape[0])
缺失值的处理
- 删除缺失值
- 均值填补法
- 向前填充/向后填充
- 模型填补法
异常值的处理
查找相应的异常值
- 大于三倍标准差
sta=(df['价格']-df['价格'].mean())/df['价格'].std()
df[sta.abs()>3]
节省大于价格的异常值
df[df.节省>df.价格]
提取出异常值的索引编号
delindex=pd.concat([df[df.节省>df.价格]],df[sta.abs()>3]]).index
根据提取出的索引编号删除源数据
df.drop(delindex,inplace=True)
查看处理后的数据
df.shape
- 删除异常值的记录
- 作为缺失值处理
df.isnull()#查看缺失值
df.notnull()#查看不是缺失值的数据
df.dropna()#删除缺失值
df.fillna()#填补缺失值
缺失值的统计
df.isnull().sum()
df.loc[df.出发地.isnull(),'出发地']=[str(x)[:2] for x in df.loc[df.出发地.isnull(),'路线名']]
缺失值的填充
用平均值进行填充缺失值
df['价格'].fillna(round(df['价格'].mean(),0),inplace=True)
- 平均值修正、盖帽法修正
- 不处理:业务分析挖掘价值
文本字符串的处理
去除前后空格处理
处理中间有,()之类的数据:replace(’’,’’)
正则表达式提取所需数据
提取酒店评分
df['酒店评分']=df.酒店.str.extract('(\d\.\d)分/5分',expand=False)
\d表示数字
\.表示.
#引号中间的是提取的内容的形式,括号中间才是提取的真实内容
#数据中酒店评分的格式如:4.5、4.6
df['酒店评分']=df.酒店.str.extract(' (.+) ',expand=False)
# .+表示所有内容
#整句话翻译就是,提取酒店列表中被两个空格中间的内容
df['天数']=df.路线名.str.extract('(\d+)天\d晚',expand=False)
\d+所有数字,不管有多少位
\d表示个位
时间格式序列的处理
将系统时间格式化
系统时间和时间戳相互转换
年月日提取
这篇博客详细介绍了使用Python进行数据清洗的各个步骤,包括数据的读写(如CSV、Excel格式)、数据探索(如查看行列数、统计描述)、数据处理(如空格去除、列名提取)、重复值和缺失值的处理、异常值识别与处理,以及文本字符串和时间序列的处理。文中使用了pandas库,提供了具体的代码示例。
226

被折叠的 条评论
为什么被折叠?



