」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何從數組長度不均勻的字典建構 Pandas DataFrame?

如何從數組長度不均勻的字典建構 Pandas DataFrame?

發佈於2024-11-14
瀏覽:853

How to Construct Pandas DataFrames from Dictionaries with Uneven Array Lengths?

從數組長度不等的字典構造 DataFrames

在 Pandas 中處理具有不等長度數組的字典需要量身定制的方法。當嘗試建立一個DataFrame,其中每一列代表字典中的一個陣列時,可能會遇到ValueError:「陣列必須具有相同的長度。」

利用系列物件

來規避此問題問題,我們利用Pandas 的Series 物件來保存不同長度的陣列。透過將每個字典值轉換為 Series,我們可以有效地儲存數組,而不管它們的長度如何。以下程式碼片段示範了這種方法:

import pandas as pd
import numpy as np

# Sample data generated via a reproducible seed
np.random.seed(2023)
data = {k: np.random.randn(v) for k, v in zip("ABCDEF", [10, 12, 15, 17, 20, 23])}

# Convert dictionary values to Series objects
series_dict = {k: pd.Series(v) for k, v in data.items()}

# Create DataFrame using these Series objects
df = pd.DataFrame(series_dict)

保留缺失值

處理不同長度的陣列時,通常會遇到缺失值,其中較短的陣列無法填入剩餘的儲存格。預設情況下,Pandas 使用 NaN(非數字)值填入這些空白。此行為保留原始數據,同時提供一致的分析結構。

配置缺失值處理

如果需要,您可以使用 DataFrame 中的 Missing_values 參數自訂缺失值的處理( ) 建構子。例如,若要以零取代NaN 取代缺失值,您可以指定missing_values=0,如下所示:

df = pd.DataFrame(series_dict, missing_values=0)

範例輸出

以下輸出說明了使用上述方法創建的DataFrame:

print(df)
      A         B         C         D         E         F
0  0.711674 -1.076522 -1.502178 -1.519748  0.340619  0.051132
1 -0.324485 -0.325682 -1.379593  2.097329 -1.253501 -0.238061
2 -1.001871 -1.035498 -0.204455  0.892562  0.370788 -0.208009
3  0.236251 -0.426320  0.642125  1.596488  0.455254  0.401304
4 -0.102160 -1.029361 -0.181176 -0.638762 -2.283720  0.183169
...       ...       ...       ...       ...       ...       ...
18       NaN       NaN       NaN       NaN       NaN       NaN
19       NaN       NaN       NaN       NaN       NaN       NaN
20       NaN       NaN       NaN       NaN       NaN       NaN
21       NaN       NaN       NaN       NaN       NaN       NaN
22       NaN       NaN       NaN       NaN       NaN       NaN
23 rows × 6 columns

如您所觀察到的,較短的陣列會在對應的儲存格中產生 NaN 值,從而提供資料的全面表示,同時保持所需的表格格式。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3