前言:python數據分析的基礎知識,簡單總結,主要是爲了方便本身寫的時候查看(大家可能看不太清楚T^T),發現有用的方法,隨時補充,歡迎指正
數據分析專欄:python
series1=pd.Series([1,2,3]) out: 0 1 1 2 2 3----->這就是序列 series2=pd.Series({'a':1,'b':2}) 序列的索引相似於一維數組 seres1.set_index('Day', inplace=True)//設置新的索引 series1[[0,1]] out: 0 1 1 2
三種方式: 一、嵌套列表 pd.DataFrame([['張三','23'],['李四','25']]) out: 0 1 0 張三 23 1 李四 25 二、字典 pd.DataFrame({'姓名':['張三','李四'],'年齡':[23,25]}) 三、二維數組 pd.DataFrame(np.array([['張三','23'],['李四','25']]))
pd.read_tabel(filepath,sep=',',parse,skiprows,nrows) //參數不少這裏不一一列舉,用的時候能夠查詢資料 pd.read_csv(……)
pd.read_excel(io=filepath,sheetname,header,parse,skiprows) //參數不少這裏不一一列舉,用的時候能夠查詢資料
df.shape//輸出數據的行列數 df.dtypes//輸出每一個數據變量的類型 data['name']=data['name'].astype('str')#數據類型的轉換 pd.to_datatime(2017年10月,format='%Y年%m月')//時間形式的更改 array=df.values #dataframe轉化成array df = pd.DataFrame(array) #array轉df 【注】還有不少,之後我用到會補充!
df.describe()//輸出數值型數據的統計描述 df.describe(include=['object'])//輸出離散型(字符型)數據的統計描述 df['price'].std()//計算列的標準差 df['price'].cov(df['point'])// 計算兩個字段間的協方差 df['price'].corr(df['point']) #相關係數在-1到1之間,接近1爲正相關,接近-1爲負相關,0爲不相關 df['name'].value_counts()#詞頻統計 df.loc[df['number']>10]#篩選指定條件的行 df.iloc[:3,:2] #冒號先後的數字再也不是索引的標籤名稱,而是數據所在的位置,從0開始,前三行,前兩列。只能用於整數索引 df_inner.iloc[[0,2,5],[4,5]] #提取第0、二、5行,四、5列 df.set_index('列名')#將列轉換成行索引 df.columns=['公司','時間','地點','學校','地點','點擊量']#設置列名 append方法: a = {"x":1,"y":2} data = data.append(a,ignore_index=True) 按指定列排序 DataFrame.sort_values(by=‘##’,axis=0,ascending=True, inplace=False, na_position=‘last’) axis=0表示列 axis=1表示行
>>重複值處理 any(df.duplicated())//檢測是否有重複值 df.drop_duplicates(inplace=Ture)//刪除重複項 >>缺失值處理 any(df.isnull()//檢測是否有缺失值 一、刪除有缺失值的行 df.dropna() 二、刪除變量(列) df.drop('age',axis=1) 三、替換 df.fillna(method='ffill')//前向替換 df.fillna(method='bfill')//後向替換 df.fillna(value=0)//常數替換 df.fillna(value={'a':df.a.mode()[0]})//統計值替換 >>異常值處理 一、標準差法 xbar=df.num.mean()//獲取平均值 xstd=df.num.std()//獲取標準差 any(df.num>xbar+2*xstd)//上限檢測 any(df.num<xbar-2*xstd)//下限檢測 二、箱線圖法 Q1=df.num.quantile(q=0.25)//第一分位數 Q3=df.num.quantile(q=0.75)//第三分位數 IQR=Q3-Q1 any(df.num>Q3+1.5*IQR)//上限檢測 any(df.num>Q1+1.5*IQR)//下限檢測 三、替換法處理異常值 UL=Q3+1.5*IQR//異常值判別上限 replace_value=df.num[df.num<UL].max()//找出低於判別上限的最大值 df.num[df.num>UL]=replace_value//替換
//取中間三行,返回姓名和年齡兩列 df.iloc[1:4,[0,2]] df.loc[1:3,['name','age']] df.ix[1:3,[0,2]]
*寫入excel df.to_excel('name1.xlsx', sheet_name='name2') *寫入csv df.to_csv('name.csv')
一、合併函數concat pd.concat([df1,df2],axis=0,join='outer',join_axes=None,ingnore_index=False,keys=None]) axis=0/1表示按照行/列合併 join=‘outer/inner’表示合併全部數據或者公共部分數據 ingnore_index是否生成新索引 keys爲合併後的數據添加新索引 二、鏈接函數merge pd.merge(left,right,how='inner',on=None,left_on=None,right_on=None) left表示主表 right表示副表 how表示鏈接方式inner、left、right、outer left_on表示主表的共同字段 right_on表示副表的共同字段