import numpy as np
import pandas as pd
df=pd.read_csv('C:/Users/15451/data/qunar_freetrip.csv',encoding='gbk',sep='\t')
df.head()
df.describe()
df.info()
df.columns
data=df.rename(columns=lambda x: x.strip())
data.head(2)
data.columns
data1=data[['出发地', '目的地', '价格', '节省', '路线名', '酒店']]
data1.head(2)
data1.isnull().sum()
data1.shape
data1[data1['出发地'].isnull()]
type(data1.路线名)
data1.路线名.str.slice(0,2)
data1.loc[data1['出发地'].isnull(),'路线名'].str.slice(0,2).values
data1.loc[data1['出发地'].isnull(),'出发地']
data1.loc[data1['出发地'].isnull(),'出发地']=data1.loc[data1['出发地'].isnull(),'路线名'].str.slice(0,2).values
data1.iloc[[1864,1930]]
data1.isnull().sum()
data1[data1['目的地'].isnull()]
data1.loc[data1['目的地'].isnull(),'目的地']=data1.loc[data1['目的地'].isnull(),'路线名'].str.slice(3,5).values
data1.iloc[1875]
data1.isnull().sum()
data2=data1.dropna()
data2
data2.isnull().sum()
data2.duplicated().sum()
data2=data2.drop_duplicates()
data2
data2.duplicated().sum()
data2.价格.describe()
data2[data2.价格>3000]
standard=(data2.价格-data2.价格.mean())/data2.价格.std()
data2[standard.abs()>3]
data3=data2.drop(data2[standard.abs()>3].index,axis=0)
data3
data3.info()
data3[['酒店名','类型','星级']]=data3.酒店.str.split(' ',2,True)
data3.head(2)
data3['星级']=data3.星级.str.slice(0,3).astype(np.float32)
data3.info()
data3.to_csv('data/1.csv',encoding='gbk',sep=',')
data3.价格.describe()
bins=[0,500,1000,2000,3000,4000,5000,6000,7000]
pd.cut(data3.价格,bins).value_counts()
pd.cut(data3.价格,bins).value_counts().plot.bar(rot=20)
dataCD=data3[data3.出发地=='成都']
dataCD
pd.cut(dataCD.价格,bins).value_counts().plot.bar(rot=20)
data3[data3['星级'].isnull()]
data3.loc[data3['星级'].isnull(),'类型'].str.slice(0,3).values
data3.loc[data3['星级'].isnull(),'星级']=data3.loc[data3['星级'].isnull(),'类型'].str.slice(0,3).values
data3
data3.to_csv('data/2.csv',encoding='gbk',sep=',')
data3.星级.isnull().sum()
data3.星级
data3.info()
data3.星级.describe()
data3['星级']=data3.星级.str.slice(0,3).astype(np.float32)
data3.info()
bins=[0,1,2,3,4,5]
pd.cut(data3.星级,bins).value_counts()
pd.cut(data3.星级,bins).value_counts().plot.bar(rot=20)