Panda's: maak een dataframe van een dictaat met verschillende lengtes


U kunt de volgende basissyntaxis gebruiken om een Panda DataFrame te maken op basis van een woordenboek waarvan de vermeldingen verschillende lengtes hebben:

 import pandas as pd

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

Deze syntaxis converteert een lijst met woordenboekarrays naar een lijst met pandareeksen.

Hierdoor kunnen we een Panda DataFrame maken en eenvoudig de NaN-waarden invullen om ervoor te zorgen dat elke kolom in het resulterende DataFrame dezelfde lengte heeft.

Het volgende voorbeeld laat zien hoe u deze syntaxis in de praktijk kunt gebruiken.

Voorbeeld: Maak een Pandas DataFrame van een dictaat met verschillende lengtes

Stel dat we het volgende woordenboek hebben met vermeldingen van verschillende lengtes:

 #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]}

Als we de functie from_dict() proberen te gebruiken om dit woordenboek naar een pandas DataFrame te converteren, krijgen we een foutmelding:

 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

We ontvangen een foutmelding die ons vertelt dat alle arrays in het woordenboek dezelfde lengte moeten hebben.

Om deze fout te omzeilen, kunnen we de volgende syntaxis gebruiken om Dictionary naar DataFrame te converteren:

 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

Merk op dat we met succes een Panda DataFrame kunnen maken en dat de NaN-waarden worden opgevuld om ervoor te zorgen dat elke kolom dezelfde lengte heeft.

Als je deze NaN-waarden wilt vervangen door andere waarden (zoals nul), kun je de functie Replace() als volgt gebruiken:

 #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

Merk op dat elke NaN-waarde is vervangen door nul.

Voel je vrij om de functie Replace() te gebruiken om de NaN-waarden te vervangen door welke waarde je maar wilt.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende bewerkingen in panda’s kunt uitvoeren:

Panda’s: een DataFrame naar een woordenboek converteren
Panda’s: kolommen hernoemen met een woordenboek
Panda’s: hoe NaN-waarden in te vullen met behulp van een woordenboek

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert