最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

在Python中利用Pandas庫(kù)處理大數(shù)據(jù)的159種操作

2020-08-13 10:24 作者:自學(xué)Python的小姐姐呀  | 我要投稿

ndas庫(kù)專為數(shù)據(jù)分析而設(shè)計(jì),它是使Python成為強(qiáng)大而高效的數(shù)據(jù)分析環(huán)境的重要因素。



是它嗎?


。。。。很顯然pandas沒有這個(gè)家伙那么可愛。。。。


我們來看看pandas的官網(wǎng)是怎么來定義自己的:


pandas is an open source, easy-to-use data structures and data analysis tools for the Python programming language.


很顯然,pandas是python的一個(gè)非常強(qiáng)大的數(shù)據(jù)分析庫(kù)!


讓我們來學(xué)習(xí)一下它吧!

pandas的數(shù)據(jù)結(jié)構(gòu)介紹

pandas主要有兩個(gè)數(shù)據(jù)結(jié)構(gòu):Series和DataFrame、雖然不能解決所有問題,但為大多數(shù)應(yīng)用提供一種可靠的、易于使用的基礎(chǔ)

一、Pandas數(shù)據(jù)結(jié)構(gòu)

1、import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

2、S1=pd.Series([‘a(chǎn)’,’b’,’c’]) series是一組數(shù)據(jù)與一組索引(行索引)組成的數(shù)據(jù)結(jié)構(gòu)

3、S1=pd.Series([‘a(chǎn)’,’b’,’c’],index=(1,3,4)) 指定索引

4、S1=pd.Series({1:‘a(chǎn)’,2:’b’,3:’c’}) 用字典形式指定索引

5、S1.index() 返回索引

6、S1.values() 返回值

7、Df=pd.DataFrame([‘a(chǎn)’,’b’,’c’]) dataframe是一組數(shù)據(jù)與兩組索引(行列索引)組成的數(shù)據(jù)結(jié)構(gòu)

8、Df=pd.DataFrame([[a,A],[b,B],[c,C]],columns=[‘小寫’,’大寫’],index=[‘一’,’二’,’三’])

Columms 為列索引,index為行索引

9、pip install -i?pypi.tuna.tsinghua.edu.cn?pyspider 清華鏡像

10、data={‘小寫’:[‘a(chǎn)’,’b’,’c’],’大寫’:[‘A’,’B’,’C’]} 傳入字典

Df=Pd.DataFrame(data)

11、Df.index() df.columns()

二、讀取數(shù)據(jù)

12、df=pd.read_excel(r’C:\user\...xlsx’,sheet_name=’sheet1’) 或

Pd.read_excel(r’C:\user\...xlsx’,sheet_name=0) 讀取excel表

13、Pd.read_excel(r’C:\user\...xlsx’,index_col=0,header=0)

index_col指定行索引,header指定列索引

14、pd.read_excel(r’C:\user\...xlsx’,usecols=[0,1]) 導(dǎo)入指定列,不能有index_col和header

15、pd.read_tablel(r’C:\user\...txt’,sep=’ ’) 導(dǎo)入txt文件,sep指定分隔符是什么

16、df.head(2) 展示前兩行,默認(rèn)展示前5行

17、df.shape 顯示數(shù)據(jù)幾行幾列,不包含行和列索引

18、df.info()?可查看表中數(shù)據(jù)的類型

19、df.describe() 可獲得表中數(shù)值類型指端的分布值(和、平均值、方差等)

三、數(shù)據(jù)預(yù)處理

20、df.info()?可顯示表中哪個(gè)數(shù)據(jù)為空

21、df.isnull() 方法可以判斷哪個(gè)值是缺失值,如果缺失返回True,否則為False

22、df.dropna() 默認(rèn)刪除含缺失值的行

23、df.dropna(how=’all’) 刪除全為空值的行,不全為空值的行不會(huì)刪除

24、df.fillna(0) 用0填充所有空值

25、df.fillna({‘性別’:’男’,’年齡’:’30’}) 對(duì)性別列中空值填充男,年齡填充30

26、df.drop_duplicates() 默認(rèn)對(duì)所有值進(jìn)行重復(fù)值檢查,保留第一行的值

27、df.drop_duplicates(subset=’性別’) 對(duì)性別列中重復(fù)值查詢保留第一行

28、df.drop_duplicates(subset=[’性別’,’公司’],keep=’last’) 對(duì)性別和公司兩列查重

keep設(shè)置默認(rèn)為first(保留第一個(gè)),可設(shè)置為last(保留最后一個(gè)) 或False(不部不保留)

29、df[‘ID’].dtype 查看ID列的數(shù)據(jù)類型

30、df[‘ID’].astype(‘float’) 將ID列的數(shù)據(jù)類型轉(zhuǎn)換為float類型

31、數(shù)據(jù)類型:int、float、object、string、unicode、datetime

32、df[‘ID’][1] ID列的第二個(gè)數(shù)據(jù)

33、df.columns=[‘大寫’,’小寫’,’中文’] 為無索引表添加列索引

34、df.index=[1,2,3] 添加行索引

35、df.set_index(‘編號(hào)’) 指明要用的列作為行索列

36、df.rename(index={‘訂單編號(hào)’:’新訂單編號(hào)’,’客戶姓名’:’新客戶姓名’}) 對(duì)行索引進(jìn)行重新命名

37、df.rename(columns={1:’一’,2:’二’}) 對(duì)列索引進(jìn)行重新命名

38、df.reset_index() 默認(rèn)將全部index轉(zhuǎn)化為column

39、df.reset_index(level=0) 將0級(jí)索引轉(zhuǎn)化為column

40、df.reset_index(drop=True) 刪除原有索引

四、數(shù)據(jù)選擇

41、df[[‘ID’,’姓名’]] 多個(gè)列名要裝入list

42、df.iloc[[1,3],[2,4]] 用行列編號(hào)選擇數(shù)據(jù)

43、df.iloc[1,1] 選取表中的第3行2列數(shù)據(jù),第一行默認(rèn)為列索引

44、df.iloc[:,0:4] #獲取第1列到第4列的值

45、df.loc[‘一’] #loc用行名選取的行數(shù)據(jù),格式是Series,但可以用列表形式訪問

46、df.loc[‘一’][0] 或 df.loc[‘一’][‘序號(hào)’]

47、df.iloc[1]#iloc用行編號(hào)選取行數(shù)據(jù)

48、df.iloc[[1,3]]#多行編號(hào)選取行數(shù)據(jù),要用list封裝,不然變成行列選取

49、df.iloc[1:3]#選擇第二行和第四行

50、df[df[‘年齡’]<45] #加判斷條件返回符合條件的全部數(shù)據(jù),不局限年齡列

51、df[(df[‘年齡’]<45)&(df[‘ID’]<4)] #判斷多條件選擇數(shù)據(jù)

52、df.iloc[[1,3],[2,4]] 相當(dāng)于df.loc[[‘一’,’二’],[‘年齡’,’ID’]] #loc是名,iloc是編號(hào)

53、df[df[‘年齡’]<45][[‘年齡’,’ID’]]#先通過年齡條件選擇行,再通過不同索引指定列

54、df.iloc[1:3,2:4]#切片索引

五、數(shù)值操作

55、df[‘年齡’].replace(100,33)#對(duì)年齡列中的100替換成33

56、df.replace(np.NaN,0)#相當(dāng)于fillna(),其中np.NaN是python中缺省值的表示方式

57、df.replace([A,B],C)#多對(duì)一替換,A、B替換成C

58、df.replace({‘A’:’a’,‘B’:’b’,‘C’:’c’})#多對(duì)多替換

59、df.sort_values(by=['申請(qǐng)單編號(hào)'],ascending=False)#申請(qǐng)單編號(hào)列降序排列,Ture升序排列(默認(rèn))

60、df.sort_values(by=['申請(qǐng)單編號(hào)'],na_position=’first’)#申請(qǐng)單編號(hào)列升序排列,缺失值排在第一位

默認(rèn)缺失值在最后一位last

61、df.sort_values(by=['col1',’col2’],ascending=[False,True])#多列排序

62、df[‘銷量’].rank(method=’first’)#銷量排名(不是排序),method有first\min\max\average

63、df.drop([‘銷量’,’ID’],axis=1)#刪除列,直接是列名

64、df.drop(df.columns[[4,5]],axis=1)#刪除列,是編號(hào)

65、df.drop(colums=[‘銷量’,’ID’])#此種方式刪除列,可以不寫axis=1

66、df.drop([‘a(chǎn)’,’b’],axis=0)#刪除行,直接是列名

67、df.drop(df.index[[4,5]],axis=0)#刪除行,是編號(hào)

68、df.drop(index=[‘a(chǎn)’,’b’])#此種方式刪除行,可以不寫axis=0

69、df[‘ID’].value_counts()#對(duì)ID列中數(shù)據(jù)出現(xiàn)的次數(shù)進(jìn)行統(tǒng)計(jì)

70、df[‘ID’].value_counts(normalize=Ture,sort=False)#對(duì)ID列中數(shù)據(jù)出現(xiàn)的次數(shù)占比進(jìn)行統(tǒng)計(jì),并降序排序

71、df[‘ID’].unique()#獲取列的唯一值

72、df[‘年齡’].isin([‘a(chǎn)’,11])#查看這列中是否包含a或11

73、pd.cut(df[‘ID’],bins=[0,3,6,10])#用bins指明切分區(qū)間

74、pd.qcut(df[‘ID’],3)#ID列切分成3個(gè)部分,每部分?jǐn)?shù)據(jù)個(gè)數(shù)盡量一致

75、df.insert(2,’商品’,[‘書’,’筆’,’計(jì)算器’])#插入第三列

76、df[’商品’]=[‘書’,’筆’,’計(jì)算器’])#插新列,在表的最后面

77、df.T行列互換

78、df.tack()#把表格型數(shù)據(jù)轉(zhuǎn)化成樹形數(shù)據(jù)

79、df.set_index([‘ID’,’姓名’]).stack().reset_index()#寬表轉(zhuǎn)換成長(zhǎng)表,先將共同列設(shè)置成行索引,再對(duì)其他列

進(jìn)行轉(zhuǎn)化成樹形數(shù)據(jù),再重置行索引

80、df.melt(id_vars=[‘ID’,’姓名’],var_name=’year’,value_name=’sale’)#id_var參數(shù)指明寬表轉(zhuǎn)換成長(zhǎng)表時(shí)保持不

變的列,var_name參數(shù)表示原來的列索引轉(zhuǎn)化為行索引對(duì)應(yīng)的列名,value_name表示新索引對(duì)應(yīng)值的列名

81、df[‘C1’].apply(lambda x:x+1)#相當(dāng)于map(),只是需要和lambda配合

82、df.applymap(lambda x:x+1),對(duì)表中的所有數(shù)據(jù)執(zhí)行相同函數(shù)運(yùn)算

六、數(shù)據(jù)運(yùn)算

83、df[‘ID’]+Df[‘ID’]#可進(jìn)行加減乘除

84、df[‘ID’]>Df[‘ID’]#可進(jìn)行> < == !=等比較運(yùn)算

85、df.count()#統(tǒng)計(jì)每列的非空值的個(gè)數(shù)

86、df.count(axis=1)#統(tǒng)計(jì)每行的非空值的個(gè)數(shù)

87、df[‘ID’].count()#統(tǒng)計(jì)指定列的非空值的個(gè)數(shù)

88、df.sum(axis=1)#每列/行求和結(jié)果

89、df.mean(axis=1)#每列/行求均值

90、df.max(axis=1)#每列/行求最大值

91、df.min(axis=1)#每列/行求最小值

92、df.median(axis=1)#每列/行求中間值

93、df.mode(axis=1)#每列/行中出現(xiàn)最多的值

94、df.var(axis=1)#每列/行求方差

95、df.std(axis=1)#每列/行求標(biāo)準(zhǔn)差

96、df.quantile(0.25)#求1/4分位數(shù),可以0.5、0.75等分位數(shù)

97、df.corr()#求整個(gè)DataFrame表中的相關(guān)性

七、時(shí)間序列

98、from datetime import datetime

99、datatime.now()#返回現(xiàn)在的時(shí)間年月日時(shí)分秒

100、datatime.now().year#返回年,可以.month\.day

101、datatime.now().weekday()-1#返回周幾

102、datatime.now().isocalendar()#返回周數(shù)

103、 (2018,41,7)#2018年的第41周第7天

104、datatime.now().date()#只返回年月日

105、datatime.now().time()#只返回時(shí)間

106、datatime.now().strftime(‘%Y-%m-%d %H:%M:%S’)#返回2020-03-13 09:09:12

107、from dateutil.parer import parse

108、 parse(str_time)#將字符串的時(shí)間轉(zhuǎn)化成為時(shí)間格式

109、pd.Datetimeindex([‘2020-02-03’,2020-03-05’])#設(shè)置時(shí)間索引

110、data[‘2018’]#獲取2018年的數(shù)據(jù)

111、data[‘2018-01’]#獲取2018年1月的數(shù)據(jù)

112、data[‘2018-01-05’:‘2018-01-15’]#獲取這個(gè)時(shí)段的數(shù)據(jù)

113、非時(shí)間索引的表格處理

114、df[df[‘成交時(shí)間’]==datetime(2018,08,05)]

115、df[df[‘成交時(shí)間’]>datetime(2018,08,05)]

116、df[(df[‘成交時(shí)間’]>datetime(2018,08,05))&(df[‘成交時(shí)間’] <datetime(2018,08,15))]

117、cha=datatime(2018,5,21,19,50)-datatime(2018,5,18,17,50)

118、 cha.days#返回天的時(shí)間差

119、 cha.seconds#返回秒的時(shí)間差

120、 cha.seconds/3600#返回小時(shí)的時(shí)間差

121、datatime(2018,5,21,19,50)+timedelta(days=1)#往后移一天

122、datatime(2018,5,21,19,50)+timedelta(seconds=20)#往后移20秒

123、datatime(2018,5,21,19,50)-timedelta(days=1)#往前移一天

八、數(shù)據(jù)透視表

124、df.groupby(‘客戶分類’).count()#客戶分類后求數(shù)運(yùn)算

125、df.groupby(‘客戶分類’).sum()#客戶分類后求和運(yùn)算

126、df.groupby(‘客戶分類’,’區(qū)域分類’).sum()#多列分類后求和運(yùn)算

127、df.groupby(‘客戶分類’,’區(qū)域分類’)[‘ID’].sum()#多列分類后ID求和運(yùn)算

128、df[‘ID’]#DataFrame取出一列就是Series類型

129、df.groupby(df[‘ID’]).sum() 相當(dāng)于 df.groupby(‘ID’).sum()

130、df.groupby(‘客戶分類’).aggregate([‘sum’,’count’]# aggregate可實(shí)現(xiàn)多種匯總方式

131、df.groupby(‘客戶分類’).aggregate({‘ID’:‘count’,’銷量’: ‘sum’})

132、# aggregate可針對(duì)不同列做不同的匯總運(yùn)算

133、df.groupby(‘客戶分類’).sum().reset_index()#分組匯總后再重置索引,變?yōu)闃?biāo)準(zhǔn)DataFrame

134、pd.pivot_table(data,values,index,columms,aggfunc,fill_value,margins,dropna,margins_name)

135、數(shù)據(jù)透視表,data:數(shù)據(jù)表df,values:值,index:行索引,columns:列索引,aggfunc:values的計(jì)算類型,fill_value:對(duì)空值的填充方式;margins:是否有合計(jì)列;margins_name:合計(jì)列的列名

136、pd.pivot_table(df,values=[’ID’,‘銷量’],index=’客戶分類’,columms=‘區(qū)域’,aggfunc={‘ID’:‘count’,’銷量’:‘sum’}),fill_value=0,margins=Ture,dropna=None,margins_name=’總計(jì)’)

九、多表格拼接

137、pd.merge(df1,df2)#默認(rèn)自動(dòng)尋找兩個(gè)表中的公共列進(jìn)行拼接

138、pd.merge(df1,df2,on=“學(xué)號(hào)“)#on來指定連接列,連接列要是公共列

139、pd.merge(df1,df2,on=[‘學(xué)號(hào)’,’姓名’]#on來指定連接列,連接列要是公共列

140、pd.merge(df1,df2,left_on=‘學(xué)號(hào)’right_on=’編號(hào)’) #由公共列,但類名不同時(shí)用左右鍵指定

141、pd.merge(df1,df2,left_index=‘學(xué)號(hào)’right_index=’編號(hào)’)#兩表公共列都是索引列時(shí)

142、pd.merge(df1,df2,left_index=‘學(xué)號(hào)’right_on=’編號(hào)’)#公共列一個(gè)時(shí)索引列一個(gè)時(shí)普通列

143、pd.merge(df1,df2,on=’學(xué)號(hào)’,how=’inner’)#返回公共列中對(duì)應(yīng)的公共值拼接(內(nèi)連接)

144、pd.merge(df1,df2,on=’學(xué)號(hào)’,how=’left’)#返回公共列中對(duì)應(yīng)的左表值(左連接)

145、pd.merge(df1,df2,on=’學(xué)號(hào)’,how=’right’)#返回公共列中對(duì)應(yīng)的右表值(右連接)

146、pd.merge(df1,df2,on=’學(xué)號(hào)’,how=’outer’)#返回公共列中對(duì)應(yīng)的所有值(外連接)

147、pd.concat([df1,df2])#兩個(gè)結(jié)構(gòu)相同的表縱向連接,保留原索引值

148、pd.concat([df1,df2],ignore_index=True)#兩個(gè)結(jié)構(gòu)相同的表縱向連接,重新設(shè)置索引值

149、pd.concat([df1,df2],ignore_index=True).drop_duplicates()#拼接后去掉重復(fù)值

十、導(dǎo)出文件

150、df.to_excel(excel_writer=r’C:\users\zhoulifu\Desktop\測(cè)試.xlsx’)#導(dǎo)出文件格式.xlsx用to_excel方法,通過excel_writer參數(shù)來實(shí)現(xiàn)

151、df.to_excel(excel_writer=r’C:\users\zhoulifu\Desktop\測(cè)試.xlsx’,sheet_name=’文檔’)

152、df.to_excel(excel_writer=r’C:\users\zhoulifu\Desktop\測(cè)試.xlsx’,sheet_name=’文檔’,index=False)#導(dǎo)出是去掉索引

153、df.to_excel(excel_writer=r’C:\users\zhoulifu\Desktop\測(cè)試.xlsx’,sheet_name=’文檔’,index=False,columns=[‘ID’,’銷量’,‘姓名’])#設(shè)置導(dǎo)出的列

154、df.to_excel(excel_writer=r’C:\users\zhoulifu\Desktop\測(cè)試.xlsx’,sheet_name=’文檔’,index=False,columns=[‘ID’,’銷量’,‘姓名’],encoding=’utf-8’)#設(shè)置導(dǎo)出的列

155、df.to_excel(excel_writer=r’C:\users\zhoulifu\Desktop\測(cè)試.xlsx’,sheet_name=’文檔’,index=False,columns=[‘ID’,’銷量’,‘姓名’],encoding=’utf-8’,na_rep=0)#缺失值填充

156、writer=pd.ExcelWriter(excelpath,engine=’xlsxwirter’)#導(dǎo)出多個(gè)文件至一個(gè)文件的多個(gè)sheet

157、df1.to_excel(writer,sheet_name=‘表一’)

158、df2.to_excel(writer,sheet_name=’表二’)

159、writer.save()


在Python中利用Pandas庫(kù)處理大數(shù)據(jù)的159種操作的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
博罗县| 平定县| 拜城县| 搜索| 澄城县| 景泰县| 长宁区| 河曲县| 开阳县| 晋宁县| 临西县| 高碑店市| 大理市| 微山县| 鲜城| 望江县| 定远县| 黎平县| 合水县| 原平市| 鄯善县| 宜黄县| 湖北省| 洪湖市| 溧水县| 烟台市| 阜阳市| 湛江市| 出国| 广水市| 遂平县| 卓尼县| 山阳县| 怀远县| 珠海市| 宾阳县| 建瓯市| 西乡县| 驻马店市| 双流县| 读书|