pandas的菜鸟级应用(谁都能学会)
簡述:
這是本人第一篇博文,因為自己想向最近很火的人工智能,大數(shù)據(jù),進(jìn)行靠攏。所以就從基本做起,掌握基本的python 的庫,像 pandas ,numpy 。水平有限大家見諒。
pandas 是基于NumPy 的一種工具,該工具是為了解決數(shù)據(jù)分析任務(wù)而創(chuàng)建的。Pandas 納入了大量庫和一些標(biāo)準(zhǔn)的數(shù)據(jù)模型,提供了高效地操作大型數(shù)據(jù)集所需的工具。pandas提供了大量能使我們快速便捷地處理數(shù)據(jù)的函數(shù)和方法。你很快就會發(fā)現(xiàn),它是使Python成為強(qiáng)大而高效的數(shù)據(jù)分析環(huán)境的重要因素之一。(來自百度百科)
一.生成數(shù)據(jù)
最基礎(chǔ)的把不管你進(jìn)行大數(shù)據(jù)還是啥的首先你得先讀數(shù)據(jù)吧。
1.導(dǎo)入庫`
2.讀入csv 或 xlsx 文件。
df = pd.DataFrame(pd.read_csv('name.csv',header=1)) df = pd.DataFrame(pd.read_excel('name.xlsx'))1)關(guān)于 read_csv 這個文件有很多參數(shù):
咱羅列一下
這是官網(wǎng)的數(shù)據(jù)
官網(wǎng)原文鏈接:(http://pandas.pydata.org/pandas-docs/stable/io.html)
有點嚇人,但是別慌,我感覺常用的有幾個,總結(jié)一下。常用的有,`
(1).filepath_or_buffer 文件的地址和名字`
df = pd.read_csv('mcup(6).CSV', sep=',',engine='python')(2)sep 間隔。如果不使用參數(shù),默認(rèn)用逗號分隔。有一個好用的間隔符
‘\s+’
正則表達(dá)式中\(zhòng)s匹配任何空白字符,包括空格、制表符、換頁符等等。
但是要分情況 。不一定‘\s+’ 好用。
(3)delimiter sep 會失效 pd.read_csv(path,sep='\s+',delimiter='\n')sep 不會有作用
(4)delim_whitespace
delim_whitespace=True,分隔符我們就簡化成了和sep=’\s+'一樣能處理各種常見分割符
(5) header 默認(rèn)為0 可為數(shù)字也可為list(列表) 沒有列名時要設(shè)成None
為列表時,就像[1,3]時是將第1行和第3行作為標(biāo)題,第2行就會跳過,并從第4行開始讀取數(shù)據(jù)
當(dāng)為0 時就是直接第一行為列名,第二行開始為數(shù)據(jù),其他同理。 沒有列名時要設(shè)成None
第一行開始讀為數(shù)據(jù)。
我感覺差不多就這些,再用到別的看官網(wǎng)。
2) 關(guān)于read_excel()這個
在羅列幾個常用的:
(1)io Excel的存儲路徑
(2)sheet_name
工作表的名稱(中英文都行)。
data = pd.read_excel(io, sheet_name = 1) #還可以 sheet_name = “SheetN” S 要大寫 。代表第N個sheet
(3) header 和上面的類似:、
(4) names 重新進(jìn)行命名 ,像數(shù)據(jù)庫里的 As
假設(shè)之前的列名就會別改成 year day month 注意: names 里的個數(shù)一定要和列名個數(shù)一樣。
(5) index_col 用作索引的列
以年作為用作索引的列``
(6) usecols 需要讀那些列 可以為整型
意思就是讀1,2,3,行
(7)
nrows 讀取多少行。
差不多就這樣:
二.對讀取的信息進(jìn)行查看
1.看形狀 df.shape
2.基本信息df,info()
3.看格式df.dtype
4.看空值df.isnull()
5.看列名df.columns
6.看前十行df.head
7.看后十行df.tail
三.數(shù)據(jù)合并
1.用merge合并(注意:需指定鏈接鍵)
left 左面的DataFrame 對象
right 右面的DataFrame 對象
on 用來確定數(shù)據(jù)集合的主鍵
left_on right_on用來指列名使不同的列明合并(注意 列名屬性必須相同)
df = pd.merge(df1,df2,left_on="country",right_on ="city")how 是鏈接方式,默認(rèn)為inner
how:inner:取交集,outer:并集;left:參照左邊表格行,right:參照右邊表格行
2.concat 合并
axis =0 為默認(rèn)值,上下合并 axis =1 左右合并
join 同上
sort 網(wǎng)上說在大數(shù)據(jù)時不要用。
合并后重新索引。
3.join 合并 (默認(rèn)為外連接 outer)
df= pd.concat([df1, df2], axis=0, join='outer')默認(rèn)之下先是進(jìn)行列合并 ,有相同的列再行合并
四.數(shù)據(jù)清洗
1.處理缺失值
首先 isnull() 和 notnull 使用
對于缺失的值來說,我用的都是用0 或用平均值代替 或者直接刪除
1)用0代替df.fillna(0)
2) 用平均值代替
3)刪除df.dropna()
兩個返回的都是bool 型變量
2.重復(fù)值
df.duolicated() 這是找重復(fù)值的函數(shù)
df.drop_duplicates() 這是去掉重復(fù)值。
3.數(shù)據(jù)之間有空格(這個因為我是小白還沒見過太多數(shù)據(jù))
查看 df['名字'].value_counts()
3.去空格:
1)去兩邊的空格
2)去左邊的空格
df['name']=df['name'].map(str.lstrip)3)去右邊的空格
df['name']=df['name'].map(str.rstrip)還有就是大小寫的轉(zhuǎn)換:
1) 全部變成大寫
df['name']=df['name'].map(str.upper)2)全部變成小寫
df['name']=df['name'].map(str.lower)3)首字母大寫
df['name']=df['name'].map(str.tittle)4.檢驗類型
1)檢驗字符
2)檢驗字母
df['name'].apply(lambda x: x.isalpha())3)檢驗數(shù)字
df['name'].apply(lambda x: x.isalnum())5.改數(shù)據(jù)類型
df['name']=df['name'].astype(np.int64)6.數(shù)據(jù)替換
df['city'].replace('sh', 'shanghai')五.數(shù)據(jù)分組
1.groupby 這學(xué)期在學(xué)數(shù)據(jù)庫,感覺很像數(shù)據(jù)庫老師說的pandas 和sql 很像,這個就是按什么分類。
對一個字段
df.groupby('country‘) .count()對兩個字段
df.groupby(['name','country'])['id'].count()六.數(shù)據(jù)篩選
這是最關(guān)鍵的至少我感覺(大佬勿噴)
1.直接
2.loc 行索引 以及篩選
print(df1.loc["1"]) aa=df1.loc[( df1['age'] > 1) & (df1['age'] < 10) ] aa=df1.loc[( df1['age'] > 1) ].sort_values(['age'])注意一定要是行標(biāo)簽
2 iloc獲取列索引
df1.iloc[0:len(df), 0:3]0 到3 列 所有行
df_inner.iloc[:3,:2] #冒號前后的數(shù)字不再是索引的標(biāo)簽名稱,而是數(shù)據(jù)所在的位置,從0開始,前三行,前兩列。3.重新設(shè)置索引
df.reset_index()4.isin 的簡單應(yīng)用
df['city'].isin(['beijing'])也可取反
5.
contains的簡單應(yīng)用
也可正則化,下一次打算系統(tǒng)總結(jié)一下正則化
七.常用操作
刪除一行,axis 指軸
df1.drop(‘列名’, axis=1)
標(biāo)準(zhǔn)差:
協(xié)方差
df['price'].cov(df['m-point'])兩個字段的相關(guān)性分析
df['price'].corr(df_i['m-point'])寫入文件
df.to_csv('example.csv') df.to_excel('python.xlsx', sheet_name='love')大體操作,當(dāng)然我也只是一個’小學(xué)生’,剛剛?cè)腴T,所以會有理解的偏差,希望大家多多指教。我們共同進(jìn)步。
總結(jié)
以上是生活随笔為你收集整理的pandas的菜鸟级应用(谁都能学会)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win7没有语音识别怎么办|win7系统
- 下一篇: USB过滤驱动程序