Pandy: utwórz ramkę danych z dyktatu o różnych długościach


Możesz użyć następującej podstawowej składni, aby utworzyć ramkę danych pandy na podstawie słownika, którego wpisy mają różną długość:

 import pandas as pd

df = pd. DataFrame (dict([(key, pd. Series (value)) for key, value in some_dict. items ()]))

Ta składnia konwertuje listę tablic słownikowych na listę serii pand.

Dzięki temu możemy utworzyć pandę DataFrame i po prostu wypełnić wartości NaN, aby mieć pewność, że każda kolumna w wynikowej ramce DataFrame ma tę samą długość.

Poniższy przykład pokazuje, jak zastosować tę składnię w praktyce.

Przykład: utwórz ramkę danych Pandas z dyktatu o różnych długościach

Załóżmy, że mamy następujący słownik zawierający wpisy o różnej długości:

 #create dictionary whose entries have different lengths
some_dict = dict(A=[2, 5, 5, 7, 8], B=[9, 3], C=[4, 4, 2])

#view dictionary
print (some_dict)

{'A': [2, 5, 5, 7, 8], 'B': [9, 3], 'C': [4, 4, 2]}

Jeśli spróbujemy użyć funkcji from_dict() do konwersji tego słownika na ramkę DataFrame pandy, otrzymamy błąd:

 import pandas as pd

#attempt to create pandas DataFrame from dictionary
df = pd. DataFrame . from_dict (some_dict)

ValueError : All arrays must be of the same length

Otrzymujemy błąd informujący nas, że wszystkie tablice w słowniku muszą mieć tę samą długość.

Aby obejść ten błąd, możemy użyć następującej składni do konwersji słownika na ramkę DataFrame:

 import pandas as pd

#create pandas DataFrame from dictionary
df = pd. DataFrame (dict([(key, pd. Series (value)) for key, value in some_dict. items ()]))

#view DataFrame
print (df)

   ABC
0 2 9.0 4.0
1 5 3.0 4.0
2 5 NaN 2.0
3 7 NaN NaN
4 8 NaN NaN

Zauważ, że jesteśmy w stanie pomyślnie utworzyć pandę DataFrame, a wartości NaN są dopełniane, aby zapewnić, że każda kolumna ma tę samą długość.

Jeśli chcesz zastąpić te wartości NaN innymi wartościami (takimi jak zero), możesz użyć funkcji zamiany() w następujący sposób:

 #replace all NaNs with zeros
df. replace (np. nan , 0, inplace= True )

#view updated DataFrame
print (df)

   ABC
0 2 9.0 4.0
1 5 3.0 4.0
2 5 0.0 2.0
3 7 0.0 0.0
4 8 0.0 0.0

Należy zauważyć, że każda wartość NaN została zastąpiona zerem.

Możesz użyć funkcji zamiany() , aby zastąpić wartości NaN dowolną wartością.

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe operacje na pandach:

Pandy: Jak przekonwertować ramkę DataFrame na słownik
Pandy: Jak zmienić nazwy kolumn za pomocą słownika
Pandy: jak wypełnić wartości NaN za pomocą słownika

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *