数据分析必备的数据预处理操作
程序员文章站
2022-09-21 09:35:50
本文解决的是2类目标业务:有数据不知道怎么做数据分析操作的。自己有思路不知道怎么落地实现的。Python数据分析基础必用品office软件(推荐2016版)Python开发环境(推荐Anaconda,对新手友好)牢记的数据分析路线采集生成需要分析的数据表单,或者从数据库中提取。数据基础信息检查。数据表清洗&预处理。有效数据特征筛选&提取。数据统计分类&汇总&透视。算法模型应用逐一进行讲解分析,划重点采集生成需要分析的数据表单,或者从数...
本文解决的是2类目标业务:
- 有数据不知道怎么做数据分析操作的。
- 自己有思路不知道怎么落地实现的。
Python数据分析基础必用品
- office软件(推荐2016版)
- Python开发环境(推荐Anaconda,对新手友好)
牢记的数据分析路线
- 采集生成需要分析的数据表单,或者从数据库中提取。
- 数据基础信息检查。
- 数据表清洗&预处理。
- 有效数据特征筛选&提取。
- 数据统计分类&汇总&透视。
- 算法模型应用
逐一进行讲解分析,划重点
- 采集生成需要分析的数据表单,或者从数据库中提取。
Python 支持从多种类型的数据导入。需要先导入 pandas 库和导入 numpy 库。
import pandas as pd import numpy as np
使用pandas导入表单
df=pd.DataFrame(pd.read_csv('table.csv',header=1)) df=pd.DataFrame(pd.read_excel('table.xlsx'))
- 数据基础信息检查。
#查看数据表的维度 df.shape #数据表信息 df.info() #查看数据表各列格式 df.dtypes #检查数据空值 df.isnull() #检查特定列空值 df['column_name'].isnull() #查看 city 列中的唯一值 df['column_name'].unique() #查看数据表的值 df.values #查看列名称 df.columns #查看前 0 行数据 df.head(0) #查看后 0 行数据 df.tail(0)
- 数据表清洗&预处理。
#删除数据表中含有空值的行 df.dropna(how='any') #使用数字 0 填充数据表中空值 df.fillna(value=0) #使用 column_name 均值对 NA 进行填充 df['column_name'].fillna(df['column_name'].mean()) #清除 column_name 字段中的字符空格 df['column_name']=df['column_name'].map(str.strip) #column_name 列大小写转换 df['column_name']=df['column_name'].str.lower() #更改数据格式 df['column_name'].astype('int') #更改列名称 df.rename(columns={'column_name': 'new_column_name'}) #删除后出现的重复值 df['column_name'].drop_duplicates() #数据替换 df['column_name'].replace('python', 'Python') #数据表匹配合并,inner 模式 df_inner=pd.merge(df,df,how='inner') #设置索引列 df_inner.set_index('column_name') #按特定列的值排序 df_inner.sort_values(by=['column_name']) #按索引列排序 df_inner.sort_index() # 数据分组 # 如果 column_name 列的值>3000,group 列显示 high,否则显示 low df_inner['column_name'] = np.where(df_inner['column_name'] > 3000,'high','low') #对复合多个条件的数据进行分组标记 df_inner.loc[(df_inner['column_name'] == 'Python') & (df_inner['column_name'] >= 4000), 'sign']=1 #数据分列 #对 column_name 字段的值依次进行分列,并创建数据表,索引值为 df_inner 的索引列,列名称为 column_name 和 column_name_size pd.DataFrame((x.split('-') for x in df_inner['column_name']),index=df_inner.index,columns=['column_name','column_name_size']) #将完成分列后的数据表与原 df_inner 数据表进行匹配 df_inner=pd.merge(df_inner,split,right_index=True, left_index=True)
- 有效数据特征筛选&提取。
#按索引提取单行的数值 df_inner.loc[3] #按索引提取区域行数值 df_inner.loc[0:5] #重设索引 df_inner.reset_index() #设置日期为索引 df_inner=df_inner.set_index('date') #提取 4 日之前的所有数据 df_inner[:'03-0-04'] #使用 iloc 按位置区域提取数据 df_inner.iloc[:3,:] #使用 iloc 按位置单独提取数据 df_inner.iloc[[0,,5],[4,5]] #使用 ix 按索引标签和位置混合提取数据 df_inner.ix[:'03-0-03',:4] #按条件提取(区域和条件值) #判断 column_name 列的值是否为 Python df_inner['column_name'].isin(['Python']) #提取前三个字符,并生成数据表 pd.DataFrame(category.str[:3]) #使用“与”条件进行筛选 df_inner.loc[(df_inner['column_name'] > 5) & (df_inner['column_name'] == 'Python'), #对筛选后的数据按 column_name 字段进行求和 df_inner.loc[(df_inner['column_name'] > 5) | (df_inner['column_name'] == 'Python'), #使用“非”条件进行筛选 df_inner.loc[(df_inner['column_name'] != 'Python'), ['id','column_name','column_name2','column_name3','column_name4']].sort(['id']) #对筛选后的数据按 column_name 列进行计数 df_inner.loc[(df_inner['column_name'] != 'Python'), ['id','column_name1,'column_name2','column_name3','column_name4']].sort(['id']).column_name.count() # 使用 query 函数进行筛选 df_inner.query('column_name == ["Python", "Java"]') #对筛选后的结果按 column_name 进行求和 df_inner.query('column_name == ["Python", "C++"]').column_name.sum()
- 数据统计分类&汇总&透视。
#对所有列进行计数汇总 df_inner.groupby('columns_name').count() #对特定的 ID 列进行计数汇总 df_inner.groupby('columns_name')['id'].count() #对两个字段进行汇总计数 df_inner.groupby(['columns_name','columns_name3'])['id'].count() #对 columns_name 字段进行汇总并计算 price 的合计和均值。 df_inner.groupby('columns_name')['columns_name'].agg([len,np.sum, np.mean]) #数据透视表 pd.pivot_table(df_inner,index=["columns_name"],values=["columns_name"],columns=["columns_name"],aggfunc=[len,np.sum],fill_value=0,margins=True) #简单的数据采样 df_inner.sample(n=3) #手动设置采样权重 weights = [0, 0, 0, 0, 0.5, 0.5] df_inner.sample(n=, weights=weights) #采样后不放回 df_inner.sample(n=6, replace=False) #采样后放回 df_inner.sample(n=6, replace=True) #数据表描述性统计 df_inner.describe().round().T #两个字段间的标准差 df_inner['columns_name'].std() #两个字段间的协方差 df_inner['columns_name'].cov(df_inner['m-point']) #相关性分析 协方差/标准差 df_inner['columns_name'].corr(df_inner['m-point']) #输出到 CSV 格式 df_inner.to_csv('excel_to_python.csv')
本文地址:https://blog.csdn.net/qq_20288327/article/details/108256052