本篇介绍合并变量和target这两个数据,及合并之前的一些数据清洗工作。

1. 读取表格文件

读入csv文件,代码如下:

import numpy as np
import pandas as pd
data = pd.read_csv('data_for_test.csv',engine='python')
print(data.shape)
data.head(3)

输出为:

Python 数据分析用 decimal好还是float python数据分析语句_数据格式


pd.read_csv()函数常用参数:

  • nrows: 读取行数
  • usecols: 读取对应列
  • encoding: 编码格式,默认utf-8;如果数据含中文,导致默认格式输出是乱码的情况,可以尝试encoding='gbk’或者encoding=‘gb18030’。
  • engine官方解释:
    engine : {‘c’, ‘python’}, optional
    Parser engine to use. The C engine is faster while the python engine is currently more feature-complete.
    笔者通常不设置此参数,但是不设置这个参数有时候会提醒错误,所以有时候需要设置,一般都是报错后再设置。

data.shape结果显示读入数据有186行,14列。
data.head(3)输出前三行数据,含表头。

多参数设置读入数据:

data_test = pd.read_csv('data_for_test.csv',engine='python',nrows=20,usecols=['id','appl_time'],encoding='gbk')

查看每一列的数据格式:

data.dtypes

输出为:

Python 数据分析用 decimal好还是float python数据分析语句_数据_02


查看指定列的数据格式为:

data[['id','var2']].dtypes

输出为:

Python 数据分析用 decimal好还是float python数据分析语句_python_03


输出该数据表的所有列标题为:

data.columns.values.tolist()


Python 数据分析用 decimal好还是float python数据分析语句_数据挖掘_04

2. 删除列

发现grade_x列不需要,删除该列。

data.drop(['grade_x'],axis=1,inplace=True)

3. 删除不符合条件的样本

查看数值型变量的统计数据:

data.describe().T

Python 数据分析用 decimal好还是float python数据分析语句_数据_05


发现age的最小值是-50,不符合常理,所以将age列小于等于0的行删除,即留下‘age’列大于0的数据。

data = data[data['age']>0]

可以看到原先数据是185行,现在剩184行。
选取符合条件样本的代码还可以是:

data3 = data.loc[(data['age'] > 25) & (data['city'] == 'Beijing')]

表示age大于25且city是Beijing的样本。

data2 = data.loc[data['city'].isin(['Shanghai'])]

表示city含Shanghai的样本。

4. 列重命名

states = {
    'var1':'is_phone'
}
data.rename(columns=states,inplace=True)

可以看到var1被重命名为is_phone,inplace=True表示在原数据进行修改。

Python 数据分析用 decimal好还是float python数据分析语句_数据_06

5. Merge合并数据

合并数据前,要检查索引列(key)是否符合以下条件:

  • key无空值
  • key数据格式一致
  • key无重复项

此样本key为两列,id和appl_time。
去除key为空的样本:

data.dropna(subset=['id','appl_time'],inplace=True)

使用data.dtypes查看到数据格式都为object。

Python 数据分析用 decimal好还是float python数据分析语句_数据挖掘_07


但需要注意的是,对于数字或时间列,只要有一个样本为字符型数据,数据格式即为object,所以为了统一数据格式,建议都转为字符型数据。

data['appl_time']=data['appl_time'].apply(str)

删除重复项:

data=data.drop_duplicates(['id','appl_time'])

从184行数据变为182行。
变量已经处理完成,再读入target数据,同样的数据处理过程,最后再合并数据。

target = pd.read_csv('data_target.csv',engine='python')
print(target.shape)
target.head()

Python 数据分析用 decimal好还是float python数据分析语句_数据格式_08


合并数据:

data = pd.merge(target, data, on=['id','appl_time'],how='inner')
print(data.shape)
data.head()

how='inner’表示为内连接合并方式,即data和target表格的id和appl_time一致时才合并,合并后剩余182行数据。

Python 数据分析用 decimal好还是float python数据分析语句_python_09

6. 存入csv文件

最后将处理好的数据存为csv文件。

data.to_csv('data_merge.csv',index=False)

index=False表示不输出索引。