日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pandas基本数据处理

發(fā)布時間:2024/9/30 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pandas基本数据处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

補充講解鏈接
pandas常用函數,個人常用的

1.重命名列名

#用rename函數對數據進行重命名 import pandas as pd df=pd.DataFrame(data=[['x1','張三',177,92,1.5,'2019/3/23'],['x2','李四',151,84,2.3,'2019/3/24']],columns=['學號','姓名','身高','語文成績','學分','日期']) df=df.rename(columns={'語文成績':'成績'}) print(df)

2.增加列,刪除列

import pandas as pd df=pd.DataFrame(data=[['x1','張三',177,92,1.5,'2019/3/23'],['x2','李四',151,84,2.3,'2019/3/24']],columns=['學號','姓名','身高','語文成績','學分','日期']) #增加列 df['新列名']=[1,2] df['新列名1']=df['語文成績']*0.2#刪除列 df=df.drop(columns=['語文成績'])#方法1 del df['新列名'] #方法2print(df)

3.子集選擇

import pandas as pd df=pd.DataFrame(data=[['x1','張三',177,92,1.5,'2019/3/23'],['x2','李四',151,84,2.3,'2019/3/24'],['x3','王五',167,80,3.2,'2019/3/25'],['x4','韓六',175,77,1.2,'2019/3/26'],['x5','趙七',153,87,1.6,'2019/3/27'] ],columns=['學號','姓名','身高','語文成績','學分','日期'])#子集選擇時,采用loc或ioc函數,loc讀取 的是索引 ,而iloc讀取的行數,相當于重新命名索引為 0,1,2... print('讀取索引范圍[2,4]的數據\n',df.loc[2:4]) print('選擇第2到第4行\(zhòng)n',df.iloc[1:4]) print('選擇身高>160且成績>80的數據,只要 姓名 學分 日期 \n',df.loc[(df['身高']>160) &(df['語文成績']>80),['姓名','學分','日期']]) print('選擇身高>160且成績>80的數據, \n',df.loc[(df['身高']>160) &(df['語文成績']>80)])

4.排序

import pandas as pd df=pd.DataFrame(data=[['x1','張三',177,92,1.5,'2019/3/23'],['x2','李四',151,84,2.3,'2019/3/24'],['x3','王五',167,80,3.2,'2019/3/25'],['x4','韓六',175,77,1.2,'2019/3/26'],['x5','趙七',153,87,1.6,'2019/3/27'] ],columns=['學號','姓名','身高','語文成績','學分','日期'])#排序 ,根據語文成績排序,ascending=True 表示升序,False 表示降序 print(df.sort_values(by=['語文成績'],ascending=True))

5.缺失值處理,缺失值處理一般使用fillna

import pandas as pd import numpy as np df=pd.DataFrame(data=[['x1','張三',177,92,1.5,'2019/3/23'],['x2','李四',151,84,2.3,'2019/3/24'],['x3','王五',167,80,3.2,'2019/3/25'],['x4','韓六',175,77,1.2,'2019/3/26'],['x5','趙七',153,87,1.6,'2019/3/27'] ],columns=['學號','姓名','身高','語文成績','學分','日期'])#缺失值處理 #先將張三的成績設為nan df.loc[(df['姓名']=='張三'),'語文成績']=np.NaN df['語文成績']=df['語文成績'].fillna(80) print(df)

6.異常值處理

import pandas as pd import numpy as np df=pd.DataFrame(data=[['x1','張三',177,92,1.5,'2019/3/23'],['x2','李四',151,84,2.3,'2019/3/24'],['x3','王五',167,80,3.2,'2019/3/25'],['x4','韓六',175,77,1.2,'2019/3/26'],['x5','趙七',153,87,1.6,'2019/3/27'] ],columns=['學號','姓名','身高','語文成績','學分','日期'])#異常值處理 #將大于 "均值+2倍標準差“ 認為是異常值,用"均值+2倍標準差”替代 abnormal=df['語文成績'].mean()+2*df['語文成績'].std() df.loc[df['語文成績']>abnormal,'語文成績']=abnormal print(df)

7.分組統(tǒng)計
pandas的分組統(tǒng)計使用groupby函數參數as_index=False 表示統(tǒng)計后返回DataFrame類型的結果,否則返回Series類型的統(tǒng)計結果

import pandas as pd import numpy as np df=pd.DataFrame(data=[['x1','張三',177,92,1.5,'2019/3/23','男','1'],['x2','李四',151,84,2.3,'2019/3/24','男','2'],['x3','王五',167,80,3.2,'2019/3/25','女','2'],['x4','韓六',175,77,1.2,'2019/3/26','女','1'],['x5','趙七',153,87,1.6,'2019/3/27','女','1'] ],columns=['學號','姓名','身高','語文成績','學分','日期','性別','班級'])print('按照班級和性別分組,統(tǒng)計每個分組的人數\n',df.groupby(by=['班級','性別'],as_index=False)['學號'].count())print('按照班級和性別分組,統(tǒng)計每個分組的平均分\n',df.groupby(by=['班級','性別'],as_index=False)['語文成績'].mean())rank=df.groupby(by=['班級'],as_index=False)['語文成績'].rank() df['排名']=rank print('按照班級分組,對組內學生按成績排序\n', df)#對每個分組使用自定義函數 #agg 或者apply函數 def myfunc(series):return '最大值是:'+str(series.max()) print('對每個分組使用自定義函數\n',df.groupby(by=['班級','性別'],as_index=False)['語文成績'].agg(myfunc))

8.apply
對于apply函數,其作用是對目標集合中的每個元素執(zhí)行相同的操作

import pandas as pd import numpy as np df=pd.DataFrame(data=[['x1','張三',177,92,1.5,'2019/3/23','男','1'],['x2','李四',151,84,2.3,'2019/3/24','男','2'],['x3','王五',167,80,3.2,'2019/3/25','女','2'],['x4','韓六',175,77,1.2,'2019/3/26','女','1'],['x5','趙七',153,87,1.6,'2019/3/27','女','1'] ],columns=['學號','姓名','身高','語文成績','學分','日期','性別','班級'])#對姓名這一列的每個元素加字幕xm def myfunc(x):return 'xm'+x df['姓名']=df['姓名'].apply(myfunc) print('對姓名這一列的每個元素加字幕xm\n',df)#對姓名這一列的每個元素刪除字幕xm df['姓名']=df['姓名'].apply(lambda x:str(x).replace('xm', '')) print('對姓名這一列的每個元素刪除字幕xm\n',df)#對于語文成績這一列,如果有小于90分的,則該為90分 def myfunc1(x):if x<90:return 90else:return x df['語文成績']=df['語文成績'].apply(myfunc1) print('對于語文成績這一列,如果有小于90分的,則該為90分\n',df)#分組應用applydef myfunc2(series):return series.max() df2=df.groupby(by=['班級'],as_index=False)['語文成績'].apply(myfunc2) print(df2)

作者:電氣 余登武

總結

以上是生活随笔為你收集整理的pandas基本数据处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。