日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

四個解決特定的任務的Pandas高效代碼

來源: 責編: 時間:2023-12-04 17:25:59 249觀看
導讀在本文中,我將分享4個在一行代碼中完成的Pandas操作。這些操作可以有效地解決特定的任務,并以一種好的方式給出結果。從列表中創建字典我有一份商品清單,我想看看它們的分布情況。更具體地說:希望得到唯一值以及它們在列

在本文中,我將分享4個在一行代碼中完成的Pandas操作。這些操作可以有效地解決特定的任務,并以一種好的方式給出結果。WpO28資訊網——每日最新資訊28at.com

WpO28資訊網——每日最新資訊28at.com

從列表中創建字典

我有一份商品清單,我想看看它們的分布情況。更具體地說:希望得到唯一值以及它們在列表中出現的次數。WpO28資訊網——每日最新資訊28at.com

Python字典是以這種格式存儲數據的好方法。鍵將是字典,值是出現的次數。WpO28資訊網——每日最新資訊28at.com

這里可以使用value_counts和to_dict函數,這項任務可以在一行代碼中完成。WpO28資訊網——每日最新資訊28at.com

這里有一個簡單的例子來說明這種情況:WpO28資訊網——每日最新資訊28at.com

import pandas as pd  grades = ["A", "A", "B", "B", "A", "C", "A", "B", "C", "A"]  pd.Series(grades).value_counts().to_dict()  # output {'A': 5, 'B': 3, 'C': 2}

將列表轉換為Pandas Series,這是Pandas的一維數據結構,然后應用value_counts函數來獲得在Series中出現頻率的唯一值,最后將輸出轉換為字典。這個操作非常高效且易于理解。WpO28資訊網——每日最新資訊28at.com

從JSON文件創建DataFrame

JSON是一種常用的存儲和傳遞數據的文件格式。WpO28資訊網——每日最新資訊28at.com

當我們清理、處理或分析數據時,我們通常更喜歡使用表格格式(或類似表格的數據)。由于json_normalize函數,我們可以通過一個操作從json格式的對象創建Pandas DataFrame。WpO28資訊網——每日最新資訊28at.com

假設數據存儲在一個名為data的JSON文件中。一般情況我們都是這樣讀取:WpO28資訊網——每日最新資訊28at.com

import json  with open("data.json") as f:     data = json.load(f)  data # output {'data': [{'id': 101,    'category': {'level_1': 'code design', 'level_2': 'method design'},    'priority': 9},  {'id': 102,    'category': {'level_1': 'error handling', 'level_2': 'exception logging'},    'priority': 8}]}

如果我們將這個變量傳遞給DataFrame構造函數,它將創建如下的DataFrame,這絕對不是一個可用的格式:WpO28資訊網——每日最新資訊28at.com

df = pd.DataFrame(data)

WpO28資訊網——每日最新資訊28at.com

但是如果我們使用json_normalize函數將得到一個整潔的DataFrame格式:WpO28資訊網——每日最新資訊28at.com

df = pd.json_normalize(data, "data")

WpO28資訊網——每日最新資訊28at.com

Explode函數

如果有一個與特定記錄匹配的項列表。需要重新格式化它,為該列表中的每個項目提供單獨的行。WpO28資訊網——每日最新資訊28at.com

WpO28資訊網——每日最新資訊28at.com

這是一個經典的行分割成列的問題。有許多的不同的方法來解決這個任務。其中最簡單的一個(可能是最簡單的)是Explode函數。WpO28資訊網——每日最新資訊28at.com

我們以這個df為例WpO28資訊網——每日最新資訊28at.com

WpO28資訊網——每日最新資訊28at.com

使用explosion函數并指定列名:WpO28資訊網——每日最新資訊28at.com

df_new = df.explode(column="data").reset_index(drop=True)

WpO28資訊網——每日最新資訊28at.com

reset_index會為DataFrame分配一個新的整數索引。WpO28資訊網——每日最新資訊28at.com

combine_first函數

combine_first函數用于合并兩個具有相同索引的數據結構。WpO28資訊網——每日最新資訊28at.com

它最主要的用途是用一個對象的非缺失值填充另一個對象的缺失值。這個函數通常在處理缺失數據時很有用。在這方面,它的作用與SQL中的COALESCE函數相同。WpO28資訊網——每日最新資訊28at.com

df = pd.DataFrame(    {         "A": [None, 0, 12, 5, None],          "B": [3, 4, 1, None, 11]    } )

WpO28資訊網——每日最新資訊28at.com

我們需要a列中的數據。如果有一行缺少值(即NaN),用B列中同一行的值填充它。WpO28資訊網——每日最新資訊28at.com

df["A"].combine_first(df["B"])  # output 0     3.0 1     0.0 2    12.0 3     5.0 4    11.0 Name: A, dtype: float64

可以看到的列A的第一行和最后一行取自列B。WpO28資訊網——每日最新資訊28at.com

如果我們想要使用3列,我們可以鏈接combine_first函數。下面的代碼行首先檢查列a。如果有一個缺失的值,它從列B中獲取它。如果列B中對應的行也是NaN,那么它從列C中獲取值。WpO28資訊網——每日最新資訊28at.com

df["A"].combine_first(df["B"]).combine_first(df["C"])

我們還可以在DataFrame級別使用combine_first函數。在這種情況下,所有缺失的值都從第二個DataFrame的相應值(即同一行,同列)中填充。WpO28資訊網——每日最新資訊28at.com

df1 = pd.DataFrame({'A': [1, 2, np.nan, 4], 'B': [5, np.nan, 7, 8]}, index=['a', 'b', 'c', 'd']) df2 = pd.DataFrame({'A': [10, np.nan, 30, 40], 'B': [50, 60, np.nan, 80]}, index=['a', 'b', 'c', 'd']) result_df = df1.combine_first(df2)

在合并的過程中,df1 中的非缺失值填充了 df2 中對應位置的缺失值。這有助于處理兩個數據集合并時的缺失值情況。WpO28資訊網——每日最新資訊28at.com

Merged DataFrame:       A     B a   1.0   5.0 b   2.0  60.0 c  30.0   7.0 d   4.0   8.0

總結

從計算簡單的統計數據到高度復雜的數據清理過程,Pandas都可以快速解決任務。上面的代碼可能不會經常使用,但是當你需要處理這種任務時,它們是非常好的解決辦法。WpO28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-37666-0.html四個解決特定的任務的Pandas高效代碼

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 深入淺出JavaScript異步編程

下一篇: 開發者必備的五類AI工具,不容錯過!

標簽:
  • 熱門焦點
  • 一加首款折疊屏!一加Open渲染圖出爐:罕見單手可握小尺寸

    8月5日消息,此前就有爆料稱,一加首款折疊屏手機將會在第三季度上市,如今隨著時間臨近,新機的各種消息也開始浮出水面。據悉,這款新機將會被命名為“On
  • 摸魚心法第一章——和配置文件說拜拜

    為了能摸魚我們團隊做了容器化,但是帶來的問題是服務配置文件很麻煩,然后大家在群里進行了“親切友好”的溝通圖片圖片圖片圖片對比就對比,簡單對比下獨立配置中心和k8s作為配
  • 得物效率前端微應用推進過程與思考

    一、背景效率工程隨著業務的發展,組織規模的擴大,越來越多的企業開始意識到協作效率對于企業團隊的重要性,甚至是決定其在某個行業競爭中突圍的關鍵,是企業長久生存的根本。得物
  • 如何使用JavaScript創建一只圖像放大鏡?

    譯者 | 布加迪審校 | 重樓如果您曾經瀏覽過購物網站,可能遇到過圖像放大功能。它可以讓您放大圖像的特定區域,以便瀏覽。結合這個小小的重要功能可以大大改善您網站的用戶體驗
  • 騰訊VS網易,最卷游戲暑期檔,誰能笑到最后?

    作者:無銹缽來源:財經無忌7月16日晚,上海1862時尚藝術中心。伴隨著幻象的精準命中,碩大的熒幕之上,比分被定格在了14:12,被寄予厚望的EDG戰隊以絕對的優勢戰勝了BLG戰隊,拿下了總決
  • 疑似小米14外觀設計圖曝光:后置相機模組變化不大

    下半年的大幕已經開啟,而誰將成為下半年手機圈的主角就成為了大家關注的焦點,其中被傳有望拿下新一代驍龍8 Gen3旗艦芯片的小米14系列更是備受大家矚
  • 2納米決戰2025

    集微網報道 從三強爭霸到四雄逐鹿,2nm的廝殺聲已然隱約傳來。無論是老牌勁旅臺積電、三星,還是誓言重回先進制程領先地位的英特爾,甚至初成立不久的新
  • 2299元起!iQOO Pad明晚首銷:性能最強天璣平板

    5月23日,iQOO如期舉行了新品發布會,除了首發安卓最強旗艦處理器的iQOO Neo8系列新機外,還在發布會上推出了旗下首款平板電腦——iQOO Pad,其最大的賣點
  • iQOO Neo8系列或定檔5月23日:首發天璣9200+ 安卓跑分王者

    去年10月,iQOO推出了iQOO Neo7系列機型,不僅搭載了天璣9000+,而且是同價位唯一一款天璣9000+直屏旗艦,一經上市便受到了用戶的廣泛關注。在時隔半年后,
Top 主站蜘蛛池模板: 葵青区| 黑河市| 巴中市| 武功县| 丁青县| 蒲城县| 泗洪县| 康乐县| 神池县| 贵州省| 板桥市| 石台县| 宾阳县| 若尔盖县| 名山县| 鄂州市| 灵武市| 尖扎县| 溧水县| 岳普湖县| 盘山县| 突泉县| 长岭县| 长阳| 开平市| 普定县| 永平县| 清河县| 三台县| 湘潭县| 登封市| 隆回县| 如东县| 呈贡县| 蕉岭县| 精河县| 霍林郭勒市| 工布江达县| 昂仁县| 周宁县| 通州区|