Datawhale组队-pandas(上)基础(自学)
Pandas是Python的核心數(shù)據(jù)分析支持庫,提供了快速靈活、明確的數(shù)據(jù)節(jié)后,旨在簡單、直觀地處理關(guān)系型、標(biāo)記型數(shù)據(jù)。Pandas的目標(biāo)是稱為Python數(shù)據(jù)分析時(shí)間與實(shí)戰(zhàn)的必備高級工具,其長遠(yuǎn)目標(biāo)是稱為最強(qiáng)大、最靈活,可以支持任何語言的開源數(shù)據(jù)。
Pandas適用于處理以下類型的數(shù)據(jù):
- 與SQL或Excel表類似的,含異構(gòu)列的表格數(shù)據(jù);
- 有序和無序(非固定頻率)的時(shí)間序列數(shù)據(jù)
- 帶行列標(biāo)簽的矩陣數(shù)據(jù),包括同構(gòu)或異構(gòu)數(shù)據(jù)
- 任意其它形式的觀測、統(tǒng)計(jì)數(shù)據(jù)集,數(shù)據(jù)轉(zhuǎn)入Pandas數(shù)據(jù)結(jié)構(gòu)時(shí)不必事先標(biāo)記。
Pandas的優(yōu)勢:
- 處理浮點(diǎn)與非浮點(diǎn)數(shù)據(jù)里的缺失數(shù)據(jù),表示為NaN;
- 大小可變:插入或刪除DataFrame等多維對象的列;
- 自動(dòng)、顯式數(shù)據(jù)對齊:顯式地將對象與一組標(biāo)簽對齊,也可以忽略標(biāo)簽,在Series、DataFrame計(jì)算時(shí)自動(dòng)與數(shù)據(jù)對齊;
- 強(qiáng)大、靈活的分組功能:拆分-應(yīng)用-組合數(shù)據(jù)集,聚合、轉(zhuǎn)換數(shù)據(jù);
- 把Python和Numpy數(shù)據(jù)結(jié)構(gòu)里不規(guī)則、不同索引的數(shù)據(jù)輕松地轉(zhuǎn)換為DataFrame對象;
- 基于智能標(biāo)簽,對大型數(shù)據(jù)集進(jìn)行切片、花式索引、子集分解等操作;
- 直觀地合并(merge)、連接(join)數(shù)據(jù)集;
- 靈活地重塑(reshape)、透視(pivot)數(shù)據(jù)集;
- 軸支持結(jié)構(gòu)化標(biāo)簽:一個(gè)刻度支持多個(gè)標(biāo)簽;
- 成熟的IO工具:讀取文本文件(csv)、Excel文件、數(shù)據(jù)庫等來源的數(shù)據(jù),利用超快的HDF5格式保存、加載數(shù)據(jù);
- 時(shí)間序列:支持日期范圍生成、頻率轉(zhuǎn)換、移動(dòng)窗口統(tǒng)計(jì)、移動(dòng)窗口線性回歸、日期位移等時(shí)間序列功能。
?
一、文件讀取與寫入
1.讀取與寫入
常見的文件格式有csv、txt、xls、xlsx格式
#讀取csv df = pd.read_csv('data/table.csv') #讀取txt df_txt = pd.read_table('data/table.txt') #可設(shè)置sep分隔符參數(shù) #讀取xls或xlsx df_excel = pd.read_excel('data/table.xlsx') #寫入csv df.to_csv('data/table.csv') #寫入xls或xlsx df_excel.to_excel('data/table.xlsx')二、基本數(shù)據(jù)結(jié)構(gòu)
Pandas的兩種數(shù)據(jù)類型:Series是帶標(biāo)簽的一維數(shù)組,可存儲整數(shù)、浮點(diǎn)數(shù)、字符串、Python對象等類型的數(shù)據(jù)。軸標(biāo)簽統(tǒng)稱為索引,Data是由多種類型的列構(gòu)成的二維標(biāo)簽數(shù)據(jù)結(jié)構(gòu),支持一維和多維數(shù)據(jù)輸入,還可以有選擇人地傳遞index和columns參數(shù)。
1.Series
對于一個(gè)Series,常用的屬性為值(values),索引(index),名字(name),類型(dtype)
s = pd.Series(np.random.randn(5),index=['a','b','c','d','e'],name='這是一個(gè)Series',dtype='float64') print(s.name) print(s.values) print(s.index) print(s.dtype)2.DataFrame
創(chuàng)建一個(gè)DataFrame
df = pd.DataFrame({'col1':list('abcde'),'col2':range(5,10),'col3':[1.3,2.5,3.6,4.6,5.8]},index=list('一二三四五'))#從DataFrame取出一列為Series print(df['col1']) print(type(df)) print(type(df['col1']))#修改行或列名 df.rename(index={'一':'one'},columns={'col1':'new_col1'})#DataFrame的屬性和方法 print(df.index) print(df.columns) print(df.values) print(df.shape) print(df.mean())索引對齊特性:
df1 = pd.DataFrame({'A':[1,2,3]},index=[1,2,3]) df2 = pd.DataFrame({'A':[1,2,3]},index=[3,1,2]) df1-df2 #由于索引對齊,因此結(jié)果不是0列的刪除與添加(drop或pop、del和直接增加、assign)
df = pd.DataFrame({'col1':list('abcde'),'col2':range(5,10),'col3':[1.3,2.5,3.6,4.6,5.8]},index=list('一二三四五')) #刪除 #drop df.drop(index='五',columns='col1') #del df['col1']=[1,2,3,4,5] del df['col1'] #pop df['col1']=[1,2,3,4,5] df.pop('col1')#直接增加列(以索引為準(zhǔn)) df1['B']=list('abc') #用assign,不會對原DataFrame修改 df1.assign(C=pd.Series(list('def')))三、常用基本函數(shù)
1、head和tail
head是默認(rèn)展示df的前5行,可通過head(10)展示第十行
tail是默認(rèn)展示df的后5行,可通過tail(10)展示第十行
2.nunique和unique
nunique顯示有多少個(gè)唯一值
unique顯示所有的唯一值
3.count和value_counts
count返回非缺失值元素個(gè)數(shù)
value_counts返回每個(gè)元素有多少個(gè)
4.describe和info
describe默認(rèn)統(tǒng)計(jì)數(shù)值型數(shù)據(jù)的各個(gè)統(tǒng)計(jì)量,可以自行選擇分位數(shù)
info函數(shù)返回有那些列,有多少非缺失值、每列的類型
5.idxmax和nlargest
idxmax函數(shù)返回最大值所在索引,在某些情況下特別適用,idxmin功能類似?
nlargest函數(shù)返回前幾個(gè)大的元素值,nsmallest功能類似
6.clip和replace
clip是對超過或者低于某些值的數(shù)進(jìn)行截?cái)?/p>
replace是對某些值進(jìn)行替換?
7.apply函數(shù)
df['Math'].apply(lambda x:str(x)+'!').head() #可以使用lambda表達(dá)式,也可以使用函數(shù)df.apply(lambda x:x.apply(lambda x:str(x)+'!')).head() #這是一個(gè)稍顯復(fù)雜的例子,有利于理解apply的功能四、排序
1.索引排序
df.set_index('Math').head() #set_index函數(shù)可以設(shè)置索引 df.set_index('Math').sort_index().head() #可以設(shè)置ascending參數(shù),默認(rèn)為升序,True2.值排序
#單值排序 df.sort_values(by='Class').head() df.sort_values(by=['Address','Height']).head()練習(xí):
?
總結(jié)
以上是生活随笔為你收集整理的Datawhale组队-pandas(上)基础(自学)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: i3wm开启自动设置显示器顺序方向分辨率
- 下一篇: zbbz 坐标标注lisp_cad坐标标