Pandas實(shí)戰(zhàn)——靈活使用pandas基礎(chǔ)知識(shí)輕松處理不規(guī)則數(shù)據(jù)
回復(fù)“書(shū)籍”即可獲贈(zèng)Python從入門(mén)到進(jìn)階共10本電子書(shū)
今
日
雞
湯
劍閣崢嶸而崔嵬,一夫當(dāng)關(guān),萬(wàn)夫莫開(kāi)。大家好,我是皮皮。
一、前言前幾天在Python最強(qiáng)王者群【wen】問(wèn)了一個(gè)pandas數(shù)據(jù)合并處理的問(wèn)題,一起來(lái)看看吧。他的原始數(shù)據(jù)如下所示:
然后預(yù)期的結(jié)果如下所示:
二、實(shí)現(xiàn)過(guò)程這里【瑜亮老師】給了一個(gè)指導(dǎo)如下:原始數(shù)據(jù)中包含所有所需的信息,但是因?yàn)樵聪到y(tǒng)導(dǎo)出的格式問(wèn)題,有些數(shù)據(jù)被分配到了合并行中,并且每個(gè)單獨(dú)的表中都是統(tǒng)一格式。
源數(shù)據(jù)中"商品", "單價(jià)", "支付方式", "銷(xiāo)售地", "銷(xiāo)量"是已經(jīng)處理好的數(shù)據(jù),不需要單獨(dú)處理。需要獲取的信息是"平臺(tái)", "商戶", "賬號(hào)",這三個(gè)均在合并行中,群友的建議都是使用re正則表達(dá)式獲取。
獲取到上面數(shù)據(jù)后,還需要?jiǎng)h掉多余的行。仔細(xì)觀察原始表格我們可以發(fā)現(xiàn):每個(gè)單獨(dú)表格是由一個(gè)平臺(tái)、商戶、賬號(hào)所查詢的,且所需平臺(tái)、商戶、賬號(hào)數(shù)據(jù)分布在合并行中,而這些合并行在被pandas讀取后會(huì)形成只有第一列有數(shù)值,其他列為NaN的情況。
處理過(guò)后的格式情況如下:
這就給了我們?nèi)サ暨@些合并行的簡(jiǎn)便方法:dropna。
而用正則獲取到的平臺(tái)、商戶、賬號(hào)只有一行,需要對(duì)數(shù)據(jù)進(jìn)行向下填充空值。而pandas中fillna(method="ffill")即可實(shí)現(xiàn)使用前值去填充下面空值的需求。最后,瑜亮老師出手,實(shí)現(xiàn)需求,代碼如下:
importpandasaspd
#讀取Excel文件
df=pd.read_excel("20230812.xlsx",header=None)
#去除重復(fù)行
df=df.drop_duplicates(ignore_index=False).reset_index(drop=True)
#根據(jù)正則表達(dá)式獲取“賬號(hào)”,“平臺(tái)”,“商戶”
df["賬號(hào)"]=df[0].str.extract(r"賬號(hào):(\d+)",expand=False).fillna(method="ffill")
df["平臺(tái)"]=df[0].str.extract(r"平臺(tái):(.*?),",expand=False).fillna(method="ffill")
df["商戶"]=df[0].str.extract(r"商戶:(.*?),",expand=False).fillna(method="ffill")
#去除含有空值的行(即excel中所有的合并行
df=df.dropna().reset_index(drop=True)
#設(shè)置df的列名
df.columns=["商品","單價(jià)","支付方式","銷(xiāo)售地","銷(xiāo)量","賬號(hào)","平臺(tái)","商戶"]
df=df[["平臺(tái)","商戶","賬號(hào)","商品","單價(jià)","支付方式","銷(xiāo)售地","銷(xiāo)量"]]
print(df)
代碼運(yùn)行后的結(jié)果如下:
完美實(shí)現(xiàn)群友的需求!
三、總結(jié)大家好,我是皮皮。這篇文章主要盤(pán)點(diǎn)了一個(gè)Pandas數(shù)據(jù)合并處理問(wèn)題,文中針對(duì)該問(wèn)題,給出了具體的解析和代碼實(shí)現(xiàn),幫助粉絲順利解決了問(wèn)題。
最后感謝粉絲【wen】提問(wèn),感謝【瑜亮老師】給出的思路和代碼解析,感謝【莫生氣】等人參與學(xué)習(xí)交流。
【提問(wèn)補(bǔ)充】溫馨提示,大家在群里提問(wèn)的時(shí)候??梢宰⒁庀旅鎺c(diǎn):如果涉及到大文件數(shù)據(jù),可以數(shù)據(jù)脫敏后,發(fā)點(diǎn)demo數(shù)據(jù)來(lái)(小文件的意思),然后貼點(diǎn)代碼(可以復(fù)制的那種),記得發(fā)報(bào)錯(cuò)截圖(截全)。代碼不多的話,直接發(fā)代碼文字即可,代碼超過(guò)50行這樣的話,發(fā)個(gè).py文件就行。
大家在學(xué)習(xí)過(guò)程中如果有遇到問(wèn)題,歡迎隨時(shí)聯(lián)系我解決(我的微信:pdcfighting1),應(yīng)粉絲要求,我創(chuàng)建了一些ChatGPT機(jī)器人交流群和高質(zhì)量的Python付費(fèi)學(xué)習(xí)交流群和付費(fèi)接單群,歡迎大家加入我的Python學(xué)習(xí)交流群和接單群!
小伙伴們,快快用實(shí)踐一下吧!如果在學(xué)習(xí)過(guò)程中,有遇到任何問(wèn)題,歡迎加我好友,我拉你進(jìn)Python學(xué)習(xí)交流群共同探討學(xué)習(xí)。
-------------------End-------------------
往期精彩文章推薦:
if a and b and c and d:這種代碼有優(yōu)雅的寫(xiě)法嗎?
Pycharm和Python到底啥關(guān)系?
都說(shuō)chatGPT編程怎么怎么厲害,今天試了一下,有個(gè)靜態(tài)網(wǎng)頁(yè),chatGPT居然沒(méi)搞定?
站不住就準(zhǔn)備加倉(cāng),這個(gè)pandas語(yǔ)句該咋寫(xiě)?
歡迎大家點(diǎn)贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持
想加入Python學(xué)習(xí)群請(qǐng)?jiān)诤笈_(tái)回復(fù)【入群】
萬(wàn)水千山總是情,點(diǎn)個(gè)【在看】行不行
/今日留言主題/
隨便說(shuō)一兩句吧~~
關(guān)鍵詞:
相關(guān)閱讀
-
Pandas實(shí)戰(zhàn)——靈活使用pandas基礎(chǔ)知識(shí)...
點(diǎn)擊上方“Python爬蟲(chóng)與數(shù)據(jù)挖掘”,進(jìn)行關(guān)注回復(fù)“書(shū)籍”即可獲贈(zèng)P... -
使用Pandas返回每個(gè)個(gè)體/記錄中屬性為1...
點(diǎn)擊上方“Python爬蟲(chóng)與數(shù)據(jù)挖掘”,進(jìn)行關(guān)注回復(fù)“書(shū)籍”即可獲贈(zèng)P... -
如何快速做出高級(jí)感 BI 大屏?讀完這...
在當(dāng)今這個(gè)數(shù)據(jù)驅(qū)動(dòng)的時(shí)代,BI大屏成為了大部分公司企業(yè)展示數(shù)據(jù),洞察 -
只需五步,就能設(shè)計(jì)出令人驚嘆的PowerBI
相信許多小伙伴在設(shè)計(jì)PowerBI報(bào)告的時(shí)候是很頭疼的,比如我們有這樣一 -
如何修改 Power BI 中的主題
PowerBI是一款強(qiáng)大的商業(yè)分析工具,可以幫助我們從各種來(lái)源中可視化和 -
鋰礦又?跌了
鋰礦最大的終端需求是電動(dòng)車(chē)。先看看7月的電動(dòng)車(chē)數(shù)據(jù)。分品牌看:比亞