数据导入
excel格式导入
df_excel = pd.read_excel('')
df_excel.head
text格式导入
df_text = pd.read_table('')
df_text.head()
csv格式导入
df_csv = pd.read_csv('./card_transdata.csv')
df_csv.head()
多文件合并
#读取多个文件合并成一个新文件
import glob
#设置文件路径
path = './'
#文件路径合并成多个数组
all_files = glob.glob(path + '/*.csv')
all_data = []
for filename in all_files:
df = pd.read_csv(filename,index_col = 0,header = 0)
all_data.append(df)
data2 = pd.concat(all_data,axis = 0,ignore_index =True)
数据查看
data = df_csv
#查看数据规模
data.shape
#查看各变量的数据类型
data.dtypes
#查看数据整体信息
data.info()
#查看数据描述统计
data.describe()
#查看所有列名
data.columns
#查看某一列的唯一值
data['used_chip'].unique()
#查看前五行
data.head()
#查看后五行
data.tail()
数据清洗
数据预处理
#数据类型转换
data['列名'] = data['列名'].astype('str')
#查看空值 判断各变量中是否存在缺失值(axis = 0代表就是列的意思)
data.isnull().any(axis = 1)
#定位缺失值所在的行
data.loc[data.isnull().any(axis = 1)]
#各变量中缺失值的数量
data.isnull().sum(axis = 0)
处理空值
#直接删除空值数据所在列(axis = 1表示列)
data2 = data.dropna(axis = 1)
data2.head()
#将缺失值填充为0
data_null_0 = data.fillna(0,inplace = False)
data_null_0.head()
#对缺失值进行填充(用中位数或平均数)
data_null_value = data.fillna(value = {'列名':data['列名'].mode()[0]},inplace = False) //众数
data_null_value = data.fillna(value = {'列名':data['列名'].mean()},inplace = False) //平均数
处理重复数据
#判断数据中是否存在重复值
data.duplicated().any
#删除重复值,会删除第一条后的,默认对所有变量判断
data.drop_duplicates()
#指定列名判断是否有重复值
data.drop_duplicates(subset=['列名','列名'],keep = 'first',inplace = False)
#first保留第一个,inplace=True对原数据修改
数据提取、筛选
#增加索引(自动增序)
data['index'] = data.index
data.head()
#增加一列(将已有数据的列数据添加到新列)
data['新列名'] = data['表中已有数据的列名']
#删除列或行时
data.drop(columns = '列名或行名')
#删除特定行,根据数值删除行
data['insured_sex'].isin(['MALE']) #insured_sex这列是否有MALE值的数据
data[data['insured_sex'].isin(['MALE'])] #查看data中insured_sex这列有MALE值的数据
data[~data['insured_sex'].isin(['MALE'])] #查看data中insured_sex这列没有MALE值的数据
data_01 = data[data['insured_sex'].isin(['MALE'])]
data_01
数据排序
#值排序:从小到大,---列值
data.sort_values(by = '列名')
#根据两列值进行排序
data.sort_values(by = ['列名','列名'])
#值排序:从大到小
data.sort_values(by = '列名',ascending = False)
#索引排序
data.sort_index('index',ascending = False)
数据汇总
#例子
#不同性别的平均保险率
insurance = data.groupby(['insured_sex'])['policy_number'].mean()
#以列表的形式进行输出
data_insurance = insurance.reset_index()
data_insurance
#不同性别每年的平均保险率
data_insurance_annual = data.groupby(['insured_sex','Year'])['policy_number'].mean().reset_index()
data_insurance_annual.head()
数据标准化
将某列数据标准化
1. [0,1]标准化
[0,1] 标准化是最基本的一种数据标准化方法,指的是将数据压缩到0~1之间。
标准化公式如下
import numpy as np
def MaxMinNormalization(x):
x = (x-np.min(x))/(np.max(x)-np.min(x))
return x
2. Z-score 标准化
Z-score 标准化是基于数据均值和方差的标准化方法。标准化后的数据是均值为0,方差为1的正态分布。这种方法要求原始数据的分布可以近似为高斯分布,否 叫效果会很差。
标准化公式如下
import numpy as np
def ZescoreNormalization(x):
x=(x-np-mean(x))/np.std(x)
return x
数据存储
data.to_excel('路径',encoding="utf8")