python基本数据操作代码备份
Posted 实用主义
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python基本数据操作代码备份相关的知识,希望对你有一定的参考价值。
1 # -*- coding: utf-8 -*- 2 """ 3 Spyder Editor 4 本文件自用 5 是数据处理的基本过程语句 6 包括文件读取、缺失值的识别和处理、异常值识别、重复值删除、数据拼接、列联表操作等 7 """ 8 %pwd 9 #读取csv文件 10 import pandas as pd 11 data=pd.read_csv(open(‘D:/data/test/20191105.csv‘)) 12 pd.set_option(‘display.max_rows‘, 99) 13 pd.set_option(‘display.max_columns‘, 8) 14 print(data.head(5)) 15 #缺失值监测和定位 16 data.isnull()#查看所有缺失值 17 data.isnull().any()#获取含有缺失值的列 18 data.isnull().all()#获取全部为NA的列 19 data.isnull().sum(axis = 0)#获取缺失值的个数 20 data.isnull().sum(axis = 0)/data.shape[0]# 各变量中缺失值的比例 21 #根据出生年份计算年龄 22 print(data[‘AGE‘]) 23 print(data[‘BIRTH‘]) 24 print(2019-data[‘BIRTH‘]) 25 data[‘AGE‘]=2019-data[‘BIRTH‘] 26 print(data) 27 #用均值填充平均分 28 i=(((data[‘SCORE(MATH)‘]+data[‘SCORE(PYTHON)‘])/2)[1]) 29 print(data) 30 data.loc[1,‘AVG(SCORE)‘]=i 31 print(data) 32 #其他填充方法 33 #删除有缺失值的行 34 data.dropna(axis=0,how=‘any‘,thresh=None,subset=None,inplace=False) 35 #axis=0对行检索 36 #any:有任何缺失值则删除该列 37 #all:所有值缺失才删除该列 38 #thresh=n保留至少n个非NaN数据 39 #subset:在某些列的自己中选择出现了缺失值的列删除 40 #inplace:筛选过确实知道新数据是存在副本还是直接删除 41 #固定值填充 42 data[‘AGE‘]=data[‘Age‘].fillna(999) 43 #均值填充 44 data[‘Age‘]=data[‘Age‘].fillna(data[‘Age‘].mean()) 45 #众数填充 46 data[‘Age‘]=data[‘Age‘].fillna(data[‘Age‘].mode()) 47 #上一个数据填充 48 data[‘Age‘]=data[‘Age‘].fillna(method=‘pod‘) 49 #下一个数据填充 50 data[‘Age‘]=data[‘Age‘].fillna(method=‘bfill‘) 51 #插值法 52 data[‘Age‘]=data[‘Age‘].interpolate() 53 #KNN 54 from fancyimpute import BiScaler,KNN,NuclearNormMinimization,SoftImpute 55 data=KNN(k=3),complete(data) 56 #重复值处理 57 data=data.drop_duplicates() 58 print(data) 59 #基本分布依靠pandas 60 data.describe() 61 #通过IQR的1.5倍为标准,规定:超过上四分位+1.5倍IQR距离,或者下四分位-1.5倍IQR距离的点为异常值。 62 import numpy as np 63 import pandas as pd 64 import matplotlib.pyplot as plt 65 from scipy import stats 66 print(data[‘AVG(SCORE)‘]) 67 d1=data[‘AVG(SCORE)‘] 68 u = d1.mean() # 计算均值 69 std = d1.std() # 计算标准差 70 stats.kstest(d1, ‘norm‘, (u, std)) 71 print(‘均值为:%.3f,标准差为:%.3f‘ % (u,std)) 72 error = d1[np.abs(d1 - u) > 3*std] 73 data_c = d1[np.abs(d1 - u) <= 3*std] 74 print(‘异常值共%i条‘ % len(error)) 75 # 筛选出异常值error、剔除异常值之后的数据data_c 76 ax2 = fig.add_subplot(2,1,2) 77 plt.scatter(data_c.index,data_c,color = ‘k‘,marker=‘.‘,alpha = 0.3) 78 plt.scatter(error.index,error,color = ‘r‘,marker=‘.‘,alpha = 0.5) 79 plt.xlim([0,10]) 80 plt.grid()#红点为异常值 81 82 83 #数据连接 84 #数据拼接 85 newdata=pd.concat([data1,data2,data3]) 86 #主键连接 87 newdata=pd.merge(left,right,on=‘app_no‘) 88 #多主键连接 89 newdata=pd.merge(left,right,on=[‘app_no‘,‘kfgzdbh‘]) 90 #主键左连接 91 newdata=pd.merge(left,right,how=‘left‘,on=‘app_no‘) 92 #主键右连接 93 newdata=pd.merge(left,right,how=‘right‘,on=‘app_no‘) 94 #内连接 95 newdata=pd.merge(left,right,left_index=True,right_index=True) 96 #两个表住建部要养的时候指定主键 97 newdata=pd.merge(left,right,left_on=‘key1‘,right_on=‘key2‘) 98 99 100 #数据透视 101 #行为color 列为director_name,值为duration 102 pd.pivot_table(df,values=[‘duration‘],columns=[‘director_name‘],index=[‘color‘]) 103 #对透视求均值 104 import numpy as np 105 pd.pivot_table(df,values=‘duration‘,,columns=[‘director_name‘],index=[‘color‘],aggfunc=np.mean) 106 #计算因子的频率 107 pd.crosstab(df[‘director_name‘],df[‘color‘],margins=True) 108 109 110 """ 111 Spyder Editor 112 数据转换的 113 归一化标准化 114 对数化 115 分箱 116 按离散变量取值创建新的01变量 117 """ 118 # (1)0-1标准化 119 # 将数据的最大最小值记录下来,并通过Max-Min作为基数(即Min=0,Max=1)进行数据的归一化处理 120 # x = (x - Min) / (Max - Min) 121 def data_norm(data): 122 _range = np.max(data) - np.min(data) 123 return (data - np.min(data)) / _range 124 data_normalization=data_norm(data[‘AVG(SCORE)‘]) 125 data_normalization 126 # (2)Z-score标准化 127 # Z分数(z-score),是一个分数与平均数的差再除以标准差的过程 → z=(x-μ)/σ,其中x为某一具体分数,μ为平均数,σ为标准差 128 # Z值的量代表着原始分数和母体平均值之间的距离,是以标准差为单位计算。在原始分数低于平均值时Z则为负数,反之则为正数 129 # 数学意义:一个给定分数距离平均数多少个标准差? 130 def data_Znorm(data): 131 mu=np.mean(data,axis=0) 132 sigma=np.std(data,axis=0) 133 return ((data - mu)/ sigma) 134 data_Zscore=data_Znorm(data[‘AVG(SCORE)‘]) 135 data_Zscore 136 # 什么情况用Z-score标准化: 137 # 在分类、聚类算法中,需要使用距离来度量相似性的时候,Z-score表现更好 138 #对数化 对数组的对数化依靠numpy 139 data_log=np.log(data[‘AVG(SCORE)‘]) 140 data_log 141 #分箱 142 data[‘AVG(SCORE)‘] 143 pd.cut(data[‘AVG(SCORE)‘], 3, labels=[‘差‘,‘中‘,‘优‘]) 144 #离散变量取值 145 data[‘AD‘] 146 from sklearn import preprocessing 147 data_Pad=pd.get_dummies(data[‘AD‘],prefix=‘Pad‘) 148 print (data_Pad)
以上是关于python基本数据操作代码备份的主要内容,如果未能解决你的问题,请参考以下文章