一般情况下PIP出现ReadTimeoutError都是因为被GFW给墙了,所以一般遇到这种问题,我们可以选择国内的镜像来解决问题。
在Windows下:C:\Users\下新建pip文件夹,在创建pip.ini文件,拷贝下面代码进去,保存。
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
其实就是把python的源换成了清华源,应该能解决问题。
建议安装pymysql 和 phpStudy
现在开始数据清洗实战
#导入数据
import pymysql
import numpy as npy
import pandas as pda
import matplotlib.pylab as pyl
conn=pymysql.connect(host="127.0.0.1",user="root",password="root",db="csdn")
sql="select * from hexun"
data=pda.read_sql(sql,conn)
print(data.describe())
#数据清洗
'''''''''缺失值处理'''''''''''
#处理缺失值缺①(类别型)
data.isnull().sum() #返回每列包含的缺失值的个数
data.dropna()#直接删除含有缺失值的行
data.dropna(axis = 1)#直接删除含有缺失值的列
data.dropna(how = 'all')#只删除全是缺失值的行
data.dropna(thresh = 4)#保留至少有4个缺失值的行
data.dropna(subset = ['C'])#删除含有缺失值的特定的列
#处理缺失值缺②(数值型) data.fillna(0, inplace = True) 在原DataFrame中修改
data.fillna(0):用0填充
data.fillna(method='pad'):用前一个数值填充
data.fillna(df2.mean()):用该列均值填充
#2.1 Imputer均值填充缺失值
from sklearn.preprocessing import Imputer
imr = Imputer(missing_values='NaN', strategy='mean', axis=0)#均值填充缺失值
imr = imr.fit(df)
imputed_data = imr.transform(df.values)
#处理缺失值缺③ 0置空循环填充
print(len(data)) #整行为空也会计数,count则不计空值
#空值→中位数插值法
x=0
data["hits"][(data["hits"]==0)]=None #hits为0设置为空值
for i in data.columns: #列循环
for j in range(len(data)):
if(data[i].isnull())[j]:
data[i][j]="2" #空值设置为中位数
x+=1
print(x) #缺失处理数
'''''''''异常值处理'''''''''''
pyl.rcParams['font.sans-serif']=['SimHei'] # 用来正常显示中文标签
pyl.rcParams['axes.unicode_minus']=False # 用来正常显示负号
#散点图(横轴为点击量,纵轴为评论数)
data2=data.T
hits=data2.values[3] #得到点击量
comt=data2.values[4]#得到评论数
pyl.plot(hits,comt,'*r')
pyl.title("点评比")
pyl.xlabel("点击量")
pyl.ylabel("评论数")
pyl.show()
#点击量异常>30000,评论数异常>230
line=len(data.values)
columns=len(data.values[0])
da=data.values
for i in range(0,line):
for j in range(0,columns):
if(da[i][3]>30000): #点击量异常处理
print(da[i][j]) #输出异常所有信息
da[i][j]=36 #修改异常值为中位数/平均数
if(da[i][4]>230): #评论数异常处理
print(da[i][j]) #输出异常所有信息
da[i][j]=2 #修改异常值为均值
da2=da.T #处理完成图
hits=da2[3]
comt=da2[4]
pyl.plot(hits,comt,'*c')
pyl.show
''''''''''''分布分析''''''''''''
hitsmax=da2[3].max()
hitsmin=da2[3].min()
comtmax=da2[4].max()
comtmin=da2[4].min()
#极差:最大-最小
hitsrg=hitsmax-hitsmin
comtrg=comtmax-comtmin
#组距:极差/组数
hitsdst=hitsrg/12
comtdst=comtrg/12
#画出点击量的直方图
hitssty=npy.arange(hitsmin,hitsmax,hitsdst) #最大,最小,组距
pyl.hist(da2[3],hitssty)
pyl.show()
#画出评论的直方图
comtsty=npy.arange(comtmin,comtmax,comtdst) #最大,最小,组距
pyl.hist(da2[4],comtsty)
pyl.show()