欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

数据分析必备的数据预处理操作

程序员文章站 2022-03-26 21:06:57
本文解决的是2类目标业务:有数据不知道怎么做数据分析操作的。自己有思路不知道怎么落地实现的。Python数据分析基础必用品office软件(推荐2016版)Python开发环境(推荐Anaconda,对新手友好)牢记的数据分析路线采集生成需要分析的数据表单,或者从数据库中提取。数据基础信息检查。数据表清洗&预处理。有效数据特征筛选&提取。数据统计分类&汇总&透视。算法模型应用逐一进行讲解分析,划重点采集生成需要分析的数据表单,或者从数...

本文解决的是2类目标业务:

  1. 有数据不知道怎么做数据分析操作的。
  2. 自己有思路不知道怎么落地实现的。

Python数据分析基础必用品

  1. office软件(推荐2016版)
  2. Python开发环境(推荐Anaconda,对新手友好)

牢记的数据分析路线

  1. 采集生成需要分析的数据表单,或者从数据库中提取。
  2. 数据基础信息检查。
  3. 数据表清洗&预处理。
  4. 有效数据特征筛选&提取。
  5. 数据统计分类&汇总&透视。
  6. 算法模型应用

逐一进行讲解分析,划重点

  1. 采集生成需要分析的数据表单,或者从数据库中提取。

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')) 
  1. 数据基础信息检查。
#查看数据表的维度 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) 
  1. 数据表清洗&预处理。
#删除数据表中含有空值的行 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) 
  1. 有效数据特征筛选&提取。
#按索引提取单行的数值 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() 
  1. 数据统计分类&汇总&透视。
#对所有列进行计数汇总 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