码迷,mamicode.com
首页 > 编程语言 > 详细

python基本数据操作代码备份

时间:2019-11-05 16:57:41      阅读:89      评论:0      收藏:0      [点我收藏+]

标签:grid   识别   pen   python   name   soft   orm   rpo   math   

  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基本数据操作代码备份

标签:grid   识别   pen   python   name   soft   orm   rpo   math   

原文地址:https://www.cnblogs.com/shilo930/p/11799375.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!