<form id="jvnrt"></form>

          <noframes id="jvnrt"><form id="jvnrt"><th id="jvnrt"><th id="jvnrt"></th></th></form>
          <address id="jvnrt"></address>

            <noframes id="jvnrt"><address id="jvnrt"><th id="jvnrt"></th></address>
            <address id="jvnrt"></address>

            您的位置:首頁 >聚焦 >

            Pandas實戰——靈活使用pandas基礎知識輕松處理不規則數據

            2023-08-19 12:41:33    來源:程序員客棧
            點擊上方“Python爬蟲與數據挖掘”,進行關注

            回復“書籍”即可獲贈Python從入門到進階共10本電子書

            劍閣崢嶸而崔嵬,一夫當關,萬夫莫開。

            大家好,我是皮皮。

            一、前言

            前幾天在Python最強王者群【wen】問了一個pandas數據合并處理的問題,一起來看看吧。他的原始數據如下所示:

            然后預期的結果如下所示:

            二、實現過程

            這里【瑜亮老師】給了一個指導如下:原始數據中包含所有所需的信息,但是因為源系統導出的格式問題,有些數據被分配到了合并行中,并且每個單獨的表中都是統一格式。

            源數據中"商品", "單價", "支付方式", "銷售地", "銷量"是已經處理好的數據,不需要單獨處理。需要獲取的信息是"平臺", "商戶", "賬號",這三個均在合并行中,群友的建議都是使用re正則表達式獲取。

            獲取到上面數據后,還需要刪掉多余的行。仔細觀察原始表格我們可以發現:每個單獨表格是由一個平臺、商戶、賬號所查詢的,且所需平臺、商戶、賬號數據分布在合并行中,而這些合并行在被pandas讀取后會形成只有第一列有數值,其他列為NaN的情況。

            處理過后的格式情況如下:

            這就給了我們去掉這些合并行的簡便方法:dropna。

            而用正則獲取到的平臺、商戶、賬號只有一行,需要對數據進行向下填充空值。而pandas中fillna(method="ffill")即可實現使用前值去填充下面空值的需求。最后,瑜亮老師出手,實現需求,代碼如下:

            importpandasaspd


            #讀取Excel文件
            df=pd.read_excel("20230812.xlsx",header=None)

            #去除重復行
            df=df.drop_duplicates(ignore_index=False).reset_index(drop=True)

            #根據正則表達式獲取“賬號”,“平臺”,“商戶”
            df["賬號"]=df[0].str.extract(r"賬號:(\d+)",expand=False).fillna(method="ffill")
            df["平臺"]=df[0].str.extract(r"平臺:(.*?),",expand=False).fillna(method="ffill")
            df["商戶"]=df[0].str.extract(r"商戶:(.*?),",expand=False).fillna(method="ffill")

            #去除含有空值的行(即excel中所有的合并行
            df=df.dropna().reset_index(drop=True)

            #設置df的列名
            df.columns=["商品","單價","支付方式","銷售地","銷量","賬號","平臺","商戶"]
            df=df[["平臺","商戶","賬號","商品","單價","支付方式","銷售地","銷量"]]
            print(df)

            代碼運行后的結果如下:

            完美實現群友的需求!

            三、總結

            大家好,我是皮皮。這篇文章主要盤點了一個Pandas數據合并處理問題,文中針對該問題,給出了具體的解析和代碼實現,幫助粉絲順利解決了問題。

            最后感謝粉絲【wen】提問,感謝【瑜亮老師】給出的思路和代碼解析,感謝【莫生氣】等人參與學習交流。

            【提問補充】溫馨提示,大家在群里提問的時候??梢宰⒁庀旅鎺c:如果涉及到大文件數據,可以數據脫敏后,發點demo數據來(小文件的意思),然后貼點代碼(可以復制的那種),記得發報錯截圖(截全)。代碼不多的話,直接發代碼文字即可,代碼超過50行這樣的話,發個.py文件就行。

            大家在學習過程中如果有遇到問題,歡迎隨時聯系我解決(我的微信:pdcfighting1),應粉絲要求,我創建了一些ChatGPT機器人交流群和高質量的Python付費學習交流群和付費接單群,歡迎大家加入我的Python學習交流群和接單群!

            小伙伴們,快快用實踐一下吧!如果在學習過程中,有遇到任何問題,歡迎加我好友,我拉你進Python學習交流群共同探討學習。

            -------------------End-------------------

            往期精彩文章推薦:

            if a and b and c and d:這種代碼有優雅的寫法嗎?

            Pycharm和Python到底啥關系?

            都說chatGPT編程怎么怎么厲害,今天試了一下,有個靜態網頁,chatGPT居然沒搞定?

            站不住就準備加倉,這個pandas語句該咋寫?

            歡迎大家點贊,留言,轉發,轉載,感謝大家的相伴與支持

            想加入Python學習群請在后臺回復【入群】

            萬水千山總是情,點個【在看】行不行

            /今日留言主題/

            隨便說一兩句吧~~

            關鍵詞:

            相關閱讀