0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

分享10個(gè)Pandas在實(shí)際應(yīng)用中肯定會(huì)用到的技巧

數(shù)據(jù)分析與開發(fā) ? 來源:機(jī)器之心 ? 作者:機(jī)器之心 ? 2022-11-21 14:44 ? 次閱讀

	

pandas是數(shù)據(jù)科學(xué)家必備的數(shù)據(jù)處理庫,我們今天總結(jié)了10個(gè)在實(shí)際應(yīng)用中肯定會(huì)用到的技巧。

1、Select from table where f1=’a’ and f2=’b’

使用AND或OR選擇子集:

dfb=df.loc[(df.Week==week)&(df.Day==day)]
OR的話是這樣dfb=df.loc[(df.Week==week)|(df.Day==day)]

2、Select where in

從一個(gè)df中選擇一個(gè)包含在另外一個(gè)df的數(shù)據(jù),例如下面的sql

select*fromtable1wherefield1in(selectfield1fromtable2)

我們有一個(gè)名為“days”的df,它包含以下值。

3bcecdd4-6955-11ed-8abf-dac502259ad0.png

如果有第二個(gè)df:

3be44466-6955-11ed-8abf-dac502259ad0.png

可以直接用下面的方式獲取

days=[0,1,2]
df[df(days)]

3、Select where not in

就像IN一樣,我們肯定也要選擇NOT IN,這個(gè)可能是更加常用的一個(gè)需求,但是卻很少有文章提到,還是使用上面的數(shù)據(jù):

days=[0,1,2]
df[~df(days)]

使用~操作符就可以了

3bfd4f4c-6955-11ed-8abf-dac502259ad0.png

4、select sum(*) from table group by

分組統(tǒng)計(jì)和求和也是常見的操作,但是使用起來并不簡單:

df(by=['RepID','Week','CallCycleDay']).sum()

如果想保存結(jié)果或稍后使用它們并引用這些字段,請?zhí)砑?as_index=False

df.groupby(by=['RepID','Week','CallCycleDay'],as_index=False).sum()

3c14cc94-6955-11ed-8abf-dac502259ad0.png

使用as_index= false,可以表的形式保存列

5、從一個(gè)表更另外一個(gè)表的字段

我們從一個(gè)df中更改了一些值,現(xiàn)在想要更新另外一個(gè)df,這個(gè)操作就很有用。

dfb=dfa[dfa.field1='somevalue'].copy()
dfb['field2']='somevalue'
dfa.update(dfb)

這里的更新是通過索引匹配的。

6、使用apply/lambda創(chuàng)建新字段

我們創(chuàng)建了一個(gè)名為address的新字段,它是幾個(gè)字段進(jìn)行拼接的。

dfa['address']=dfa.apply(lambdarow:row['StreetName']+','+
row['Suburb']+','+str(row['PostalCode']),axis=1)

7、插入新行

插入新數(shù)據(jù)的最佳方法是使用concat。我們可以用有pd. datafframe .from_records一將新行轉(zhuǎn)換為df。

newRow=row.copy()
newRow.CustomerID=str(newRow.CustomerID)+'-'+str(x)
newRow.duplicate=True
df=pd.concat([df,pd.DataFrame.from_records([newRow])])

8、更改列的類型

可以使用astype函數(shù)將其快速更改列的數(shù)據(jù)類型

df=pd.read_excel(customers_.xlsx')
df['Longitude']=df['Longitude'].astype(str)
df['Latitude']=df['Longitude'].astype(str)

9、刪除列

使用drop可以刪除列:

defcleanColumns(df):
forcolindf.columns:
ifcol[0:7]=="Unnamed":
df.drop(col,inplace=True,axis=1)
returndf

10、地圖上標(biāo)注點(diǎn)

這個(gè)可能是最沒用的技巧,但是他很好玩

這里我們有一些經(jīng)緯度的數(shù)據(jù):

3c37a2b4-6955-11ed-8abf-dac502259ad0.png

現(xiàn)在我們把它根據(jù)經(jīng)緯度在地圖上進(jìn)行標(biāo)注:

df_clustercentroids=pd.read_csv(centroidFile)
lst_elements=sorted(list(dfm.cluster2.unique()))
lst_colors=['#%06X'%np.random.randint(0,0xFFFFFF)foriinrange(len(lst_elements))]
dfm["color"]=dfm["cluster2"]
dfm["color"]=dfm["color"].apply(lambdax:lst_colors[lst_elements.index(x)])

m=folium.Map(location=[dfm.iloc[0].Latitude,dfm.iloc[0].Longitude],zoom_start=9)

forindex,rowindfm.iterrows():
folium.CircleMarker(location=[float(row['Latitude']),float(row['Longitude'])],radius=4,popup=str(row['RepID'])+'|'+str(row.CustomerID),color=row['color'],fill=True,fill_color=row['color']
).add_to(m)

forindex,rowindf_clustercentroids.iterrows():
folium.Marker(location=[float(row['Latitude']),float(row['Longitude'])],popup=str(index)+'|#='+str(dfm.loc[dfm.cluster2==index].groupby(['cluster2'])['CustomerID'].count().iloc[0]),icon=folium.Icon(color='black',icon_color=lst_colors[index]),tooltip=str(index)+'|#='+str(dfm.loc[dfm.cluster2==index].groupby(['cluster2'])['CustomerID'].count().iloc[0])).add_to(m)

m

結(jié)果如下:

3c62f5cc-6955-11ed-8abf-dac502259ad0.png

審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    6837

    瀏覽量

    88754
  • SQL
    SQL
    +關(guān)注

    關(guān)注

    1

    文章

    753

    瀏覽量

    44036

原文標(biāo)題:分享 10 個(gè) Pandas 的小技巧!

文章出處:【微信號:DBDevs,微信公眾號:數(shù)據(jù)分析與開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    使用TLV3501做了一個(gè)單限比較器,可以使用到10MHZ,但是實(shí)際使用時(shí)卻達(dá)不到,為什么?

    目前使用TLV3501做了一個(gè)單限比較器,比較閾值為1V,仿真正常,可以使用到10MHZ,但是實(shí)際使用時(shí)卻達(dá)不到,只能用1Mhz左右, 仿真圖如下: 請問
    發(fā)表于 08-29 07:23

    功放芯片中說的失真10%實(shí)際應(yīng)用中怎么衡量?

    功放芯片中說的失真10%實(shí)際應(yīng)用中怎么衡量
    發(fā)表于 08-14 06:03

    OPA552很容易損壞是怎么回事?

    您好!板子上有16路OPA552做直流電源輸出電路,輸出電壓范圍-10V~+30V,V+=32V,V-=-15V,實(shí)際使用中沒有什么問題,但是OPA552經(jīng)常會(huì)損壞,不是超過功率損壞,16路中
    發(fā)表于 08-01 06:31

    請問ESP-AT在編譯過程中會(huì)用到哪些源文件?

    如題,請問ESP-AT在編譯過程中會(huì)用到哪些源文件?要修改藍(lán)牙相關(guān)的代碼應(yīng)該修該哪些呢?有通透的大神指點(diǎn)一下嗎?謝謝!
    發(fā)表于 06-27 06:59

    你一定會(huì)用到的紐扣電池選型方案

    一、RTC備用電池選型注意事項(xiàng)RTC是一種用于提供系統(tǒng)時(shí)間的獨(dú)立定時(shí)器,它可以系統(tǒng)斷電或低功耗模式下繼續(xù)運(yùn)行,只需要一個(gè)后備電池作為供電源。嵌入式系統(tǒng)中,選擇合適的RTC電池時(shí)非常關(guān)鍵的,它會(huì)
    的頭像 發(fā)表于 03-05 08:13 ?1096次閱讀
    你一<b class='flag-5'>定會(huì)用到</b>的紐扣電池選型方案

    機(jī)器人會(huì)用到哪些傳感器

    機(jī)器人會(huì)用到哪些傳感器? 機(jī)器人是一種能夠自主行動(dòng)并感知環(huán)境的自動(dòng)化設(shè)備。為了實(shí)現(xiàn)這一目標(biāo),機(jī)器人通常需要使用各種不同類型和功能的傳感器。這些傳感器可以幫助機(jī)器人感知其周圍的物理環(huán)境、檢測和追蹤目標(biāo)
    的頭像 發(fā)表于 01-03 15:59 ?2505次閱讀

    電感使用中受潮會(huì)影響使用嗎

    。 可以肯定的告訴大家,電感使用中受潮的話,肯定會(huì)對使用產(chǎn)生影響的。受潮對于電感的影響是比較嚴(yán)重的,比如: 1、受潮可能會(huì)導(dǎo)致電感的電阻增加,因?yàn)槭艹睍?huì)導(dǎo)致線圈之間的絕緣性能下降,這就很容易導(dǎo)致電感的電阻增加。電
    的頭像 發(fā)表于 12-21 10:40 ?380次閱讀

    說說影響高低溫循環(huán)試驗(yàn)箱價(jià)格的因素

    ?針對這些問題,艾思荔小編帶大家從幾個(gè)方面來看看。先看質(zhì)量,質(zhì)量是重要的,用戶選擇任何設(shè)備都要考慮質(zhì)量是否合格,如果質(zhì)量不理想,使用過程中肯定會(huì)遇到各種問題,影響
    的頭像 發(fā)表于 12-20 10:44 ?303次閱讀
    說說影響高低溫循環(huán)試驗(yàn)箱價(jià)格的因素

    用TMS320F2812的兩個(gè)單次訪問能實(shí)現(xiàn)一次配置讀寫或者普通讀寫嗎?

    各位大俠好! 我有一個(gè)應(yīng)用是用TMS320F2812來采集電機(jī)的位置,用到了AD2S1210,我看數(shù)據(jù)手冊中AD2S1210的并行接口配置模式和普通模式的讀寫操作都是有寫有讀的復(fù)合過程。我用F2812的兩個(gè)單次訪問能實(shí)現(xiàn)一次配置
    發(fā)表于 12-20 06:17

    Python利用pandas讀寫Excel文件

    使用pandas模塊讀取Excel文件可以更為方便和快捷。pandas可以將Excel文件讀取為一個(gè)DataFrame對象,方便進(jìn)行數(shù)據(jù)處理和分析。
    的頭像 發(fā)表于 12-16 11:22 ?1254次閱讀
    Python利用<b class='flag-5'>pandas</b>讀寫Excel文件

    優(yōu)化毫米波信號分析的五個(gè)提示

    無論你是否做過許多毫米頻率的測量,你都可能在跟蹤這一領(lǐng)域的發(fā)展。鑒于無線和其他應(yīng)用擴(kuò)展到更高的頻率和更寬的帶寬,覆蓋范圍并不短缺。毫米頻率下獲得精確可靠的測量肯定會(huì)挑戰(zhàn)你的技能,并密切關(guān)注那些你射頻甚至微波中更隨意對待的因素
    的頭像 發(fā)表于 12-06 15:07 ?483次閱讀
    優(yōu)化毫米波信號分析的五<b class='flag-5'>個(gè)</b>提示

    使用pandas進(jìn)行數(shù)據(jù)選擇和過濾的基本技術(shù)和函數(shù)

    Python pandas庫提供了幾種選擇和過濾數(shù)據(jù)的方法,如loc、iloc、[]括號操作符、query、isin、between等等
    的頭像 發(fā)表于 12-01 10:14 ?324次閱讀
    使用<b class='flag-5'>pandas</b>進(jìn)行數(shù)據(jù)選擇和過濾的基本技術(shù)和函數(shù)

    介紹一下I2C和SPI兩種常見的通信協(xié)議之間區(qū)別

    與ECU或者嵌入式相關(guān)的工作中, 我們肯定會(huì)接觸到各種通信協(xié)議, 很多協(xié)議有很多類似的地方, 也容易混淆. 本文來介紹一下兩種常見的通信協(xié)議之間的區(qū)別.
    的頭像 發(fā)表于 11-30 16:50 ?3210次閱讀
    介紹一下I2C和SPI兩種常見的通信協(xié)議之間區(qū)別

    如何實(shí)現(xiàn)Pandas的DataFrame轉(zhuǎn)換交互式表格

    Pivottablejs是一個(gè)通過IPython widgets集成到Python中的JavaScript庫,允許用戶直接從DataFrame數(shù)據(jù)創(chuàng)建交互式和靈活的匯總報(bào)表??梢赃M(jìn)行高效、清晰的數(shù)據(jù)分析和表示,幫助將數(shù)據(jù)從Pandas DataFrame轉(zhuǎn)換為易于觀察的交
    的頭像 發(fā)表于 11-21 16:15 ?794次閱讀
    如何實(shí)現(xiàn)<b class='flag-5'>Pandas</b>的DataFrame轉(zhuǎn)換交互式表格