python資料分析 python入門 程式語言
(一)讀取csv檔案 1.本地讀取 import pandas as pd df = pd.read_csv(‘E:\tips.csv’) 2.網路讀取
import pandas as pd import MySQLdb mysql_cn= MySQLdb.connect(host=‘localhost’, port=3306,user=‘myusername’, passwd=‘mypassword’, db=‘mydb’) df = pd.read_sql(‘select * from test;’, con=mysql_cn) mysql_cn.close() (三)讀取excel檔案
df = pd.read_excel(‘E:\tips.xls’) (四)資料匯出到csv檔案
df.to_csv(‘E:\demo.csv’, encoding=‘utf-8’, index=False) 萬事開頭難,給要學習python的同學開個好頭,初入程式設計行業不清楚自己是否真的可以或者擔心自己學不會。 那麼在學習之前咱們得有一個明確的學習目標,詳細的學習線路,做到不盲目學習,少走彎路,在這裡給大家分享一些python入門的學習教程和方法,以及目前python最新的學習線路,歡迎大家加入python學習交流qq群:515267276
二.提取和篩選需要的資料 (一)提取和檢視相應資料
print df.head() #列印資料前五行 print df.tail() #列印資料後5行 print df.columns #列印列名 print df.index #列印行名 print df.ix[10:20, 0:3] #列印10~20行前三列資料 df.iloc[[1,3,5],[2,4]]#提取不連續行和列的資料,這個例子提取的是第1,3,5行,第2,4列的資料 df.iat[3,2]#專門提取某一個數據,這個例子提取的是第三行,第二列資料(預設從0開始算) print df.drop(df.columns[1, 2], axis = 1) #捨棄資料前兩列 print df.drop(df.columns[[1, 2]], axis = 0) #捨棄資料前兩行 print df.shape #列印維度 df.iloc[3] #選取第3行 df.iloc[2:4] #選取第2到第3行 df.iloc[0,1] #選取第0行1列的元素
(二)篩選出需要的資料
df[df.tip>8] #篩選出小費大於$8的資料 df[(df.tip>7)|(df.total_bill>50)] #篩選出小費大於$7或總賬單大於$50的資料 df[(df.tip>7)&(df.total_bill>50)]#篩選出小費大於$7且總賬單大於$50的資料 df[[‘day’,‘time’]][(df.tip>7)|(df.total_bill>50)] #符合條件的time 和 day
三.統計描述 print df.describe() #描述性統計
四.資料處理 (一)資料轉置
print df.T (二)資料排序
df.sort_values(by=‘tip’) #按tip列升序排序 (三)缺失值處理
1.填充缺失值
print frame[‘tz’].fillna(12345) #以數字代替缺失值 print frame[‘tz’].fillna(method=‘pad’) #用前一個數據代替缺失值 print frame[‘tz’].fillna(method=‘bfill’) #用後一個數據代替缺失值 2.刪除缺失值
print frame[‘tz’].dropna(axis=0) #刪除缺失行 print frame[‘tz’].dropna(axis=1) #刪除缺失列 3.插值法填補缺失值
print czf_data.interpolate()
(四)資料分組
group = df.groupby(‘day’)
(五)值替換
print Series.replace(0,10000000000000) #數值替換,例如將0換成10000000000000 print Series.replace([0,1,2,3,4,5],[11111,222222,3333333,44444,55555,666666])#列和列的替換同理
五.統計分析 (一)t檢驗
1.獨立樣本t檢驗
import pandas as pd from scipy.stats import ttest_ind IS_t_test = pd.read_excel(‘E:\IS_t_test.xlsx’) Group1 = IS_t_test[IS_t_test[‘group’]==1][‘data’] Group2 = IS_t_test[IS_t_test[‘group’]==2][‘data’] print ttest_ind(Group1,Group2) #輸出 (-4.7515451390104353, 0.0014423819408438474) 輸出結果的第一個元素為t值,第二個元素為p-value 如果P小於0.05,依然說明兩組資料有顯著性差異 ttest_ind預設兩組資料方差齊性
檢驗兩組資料的方差齊性: print levene(group1,group2) 若檢驗結果為p>0.05,認為兩組資料方差齊性,否則用print ttest_ind(Group1,Group2,equal_var=False) 2.配對樣本t檢驗
import pandas as pd from scipy.stats import ttest_rel IS_t_test = pd.read_excel(‘E:\IS_t_test.xlsx’) Group1 = IS_t_test[IS_t_test[‘group’]==1][‘data’] Group2 = IS_t_test[IS_t_test[‘group’]==2][‘data’] print ttest_rel(Group1,Group2)
#輸出 (-5.6873679190073361, 0.00471961872448184) 若p>0.05則資料沒有差異 (二)方差分析
1.單因素方差分析
import pandas as pd from scipy import stats IS_t_test = pd.read_excel(‘E:\IS_t_test.xlsx’) Group1 = IS_t_test[IS_t_test[‘group’]==1][‘data’] Group2 = IS_t_test[IS_t_test[‘group’]==2][‘data’] w,p = stats.levene(*args) #levene方差齊性檢驗。如果p<0.05,則方差不齊 print w,p #進行方差分析 f,p = stats.f_oneway(*args)
2.多因素方差分析
#多因素方差分析 from statsmodels.formula.api import ols from statsmodels.stats.anova import anova_lm formula = ‘weight~C(id)+C(nutrient)+C(id):C(nutrient)’ anova_results = anova_lm(ols(formula,MANOVA).fit()) print anova_results
</div>
<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-7f770a53f2.css" rel="stylesheet">
</div>