儒冠多误身
2019.04.20个人总结
- 第一步:备份源数据到其他盘符、硬盘、u盘、网盘等
- 需求分析
- 数据提取
- 数据清洗
- 数据分析
- 报告撰写
- 报告分享
- 投入应用收集反馈
文章目录
1. 目标确定
2. 数据获取
数据来源
- 数据可信度
3. 数据清洗
3.1 预处理
3.1.1 读取
pd.read_csv('demo.csv',na_values=['XYZ','NA','-999',0])
3.1.2 观察
-
基本框架
.shape .info() .head() pd.value_counts(df['col']) df['col'].value_counts() -
数据特征
- 连续型数据
- 离散型数据
-
索引值是可以重复的
df.index.is_unique -
重命名
df.rename(index=str.lower,columns={ 'col1':'a','col2':'b'})
3.1.3 关联
-
pd.merge(),相当于SQL的join
pd.merge(left,right,left_on=,right_on=,suffixes=('_x','__y')) -
pd.concat(),堆叠
pd.concat([df1,df2,df3,s1],axis=1)# index pd.concat([s1,s2,s3])- axis=0,columns
-
df1.join(df2),按照index连接 -
df1.combine_first(df2),修补- 结果会同时包含df1和df2的行与列
- df1的缺失值NaN,会被df2对应位置的数值修补
def func(x): a = str(x) return pd.Series(a+'_a') df_new=df['col'].apply(func) df_new.rename(columns={ }) df.combine_first(df_new) -
s1.combine_first(s2)修补 -
np.concatenate([arr1,arr2])- axis=1,左右连接
- axis-0,堆叠
-
map函数
-
a = { 'col1_1':'a','col1_3':'c'} df['col1'].map(a)
-
3.2 缺失值
3.2.1 缺失值统计
-
是否有缺失值
- 缺失的原因
-
诊断
len(df['col'].unique()) len(df) df['col'].duplicatd() df['col'].drop_duplicates() df.drop_duplicates(subset=['col1','col3'],keep=False,inpalce=True) df.isnull().values.any() df.isnull().any() df['col'].isnull() df['col'].isnull().values.any() -
统计
df.isnull().sum() df.isnull().sum().sum() df.isnull().sum() / df.count()# 缺失值占比
3.2.2 缺失值填充
-
舍弃
df.dropna() df.dropna(how='any') df.dropna(thresh = 3)# 每行缺失值超过3个的都舍弃 df.dropna(how='all',axis=1)# 列 -
填充
df.fillna(0) df.fillna({ 'col1':1,'col3':11}) df.fillna(method='ffill') df.fillna(method='bfill',limit=3)# 限制填充数量 df['col'].fillna(df['col'].mean()) df['col'].fillna(df.groupby('col')[].transform('mean'))#其结构与df的结构一致 -
内插法补齐[处理有规律数据,时间戳等]
df.interpolate()
3.3 重复值
-
统计
df.duplicated(subset=['col1','col3']).value_counts() -
先排序,再去重
df.sort_values(by='col1').dropduplicates(subset=['col2','col3'])- 排序会将col1列NaN值放在最下面,可确保去重时不会将该列为NaN的值保留
- 因为去重时,默认保留第一次出现的行
-
去重的用法
DataFrame.drop_duplicates(subset=None, keep='first', inplace=False)- keep,默认:删除重复项并保留第一次出现的元素
'first','last','False',False:一行都不保留
- keep,默认:删除重复项并保留第一次出现的元素
3.4 转换
3.4.1 格式转换
-
要注意判断,是否包含不能转换的元素
df.col.astype()
3.4.2 字符串转换
3.4.2.1 拆分字符串
-
拆分字符串
Series.str.split(pat=None, n=-1, expand=False)- pat:分隔符,默认为所有空字符,包括空格、换行符\n、制表符\t
- n:切几刀,默认-1,有多少切多少
- expand=
- False,返回Series
- True,返回DataFrame
- 结合df1.combine_first(df_new)
- 注意column的名称
-
统计长度不为N的元素的个数
df1

本文详细介绍了Python数据处理和分析的基本流程,包括数据获取、预处理(如缺失值和重复值处理)、数据转换、数据分析和建模。讨论了数据清洗中的各种技巧,如读取、观察和关联数据,以及如何处理缺失值和逻辑错误。同时,文章涵盖了数据规范化、统计计算、可视化和假设检验等关键步骤,为实际数据分析项目提供了实用指导。
最低0.47元/天 解锁文章
4866

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



