Hoe Pandas DataFrame-kolomkoppen als een lijst te krijgen

Pandas is een open-sourcepakket voor gegevensanalyse in Python. pandas.DataFrame is de primaire Pandas-gegevensstructuur. Het is een tweedimensionale gegevensstructuur in tabelvorm met gelabelde assen (rijen en kolommen).

Een veel voorkomende use case is om een ​​lijst met kolomkoppen te krijgen van een DataFrame object.

We zullen het DataFrame object, dat we hieronder definiëren, hergebruiken in alle andere codevoorbeelden van deze tutorial.

>>> import pandas
>>> cities = {
...   'name': ['New York', 'Los Angeles', 'Chicago'],
...   'population': [8601186, 4057841, 2679044],
...   'state': ['NY', 'CA', 'IL'],
... }
>>> data_frame = pandas.DataFrame(cities)

Een manier om DataFrame kolomnamen te verkrijgen is door over een DataFrame object zelf te itereren . DataFrame iterator retourneert kolomnamen in de volgorde van definitie.

>>> for column in data_frame:
...   print(column)
...
name
population
state

Wanneer het nodig is om een ​​iterabel om te zetten in een lijst, kan je de ingebouwde list functie van Python erop aanroepen.

>>> list(data_frame)
['name', 'population', 'state']

De prestaties van deze methode zijn echter traag.

>>> from timeit import timeit
>>> timeit(lambda: list(data_frame))
7.818843764999997

We kunnen ook dieper in een DataFrame object gaan om vanuit een DataFrame.columns eigenschap toegang te krijgen tot de kolommen.

>>> list(data_frame.columns)
['name', 'population', 'state']

Anders kunnen we de DataFrame.columns.tolist() functie gebruiken om hetzelfde te bereiken.

>>> data_frame.columns.tolist()
['name', 'population', 'state']

De prestaties van beide methoden zijn niet veel beter.

>>> timeit(lambda: list(data_frame.columns))
7.143133517000024
>>> timeit(lambda: data_frame.columns.tolist())
6.064925153999866

Dingen veranderen veel wanneer ze nog verder in DataFrame.columns.values eigendom gaan. Evenzo kunnen we, net als bij DataFrame object en DataFrame.columns eigenschap, het gebruiken om een ​​reeks DataFrame kolomnamen te krijgen.

>>> list(data_frame.columns.values)
['name', 'population', 'state']

De prestaties van deze aanpak zijn 5 tot 6 keer beter in vergelijking met de vorige methoden.

>>> timeit(lambda: list(data_frame.columns.values))
1.301724927000123

Toch kan de beste looptijd worden bereikt als we de ingebouwde DataFrame.columns.values.tolist() methode gebruiken.

>>> data_frame.columns.values.tolist()
['name', 'population', 'state']
>>> timeit(lambda: data_frame.columns.values.tolist())
0.6860591469999235

Zoals we kunnen zien, is de uitvoering van deze aanpak meer dan tien keer beter dan wanneer we rechtstreeks over het DataFrame object hadden herhaald . De meeste ingenieurs zullen nieuwsgierig zijn naar de redenen voor een dergelijk verschil in prestaties.

Het antwoord verbergt zich in het gegevenstype van de DataFrame.columns.values eigenschap. Het is een NumPy- array. NumPy is een Python-pakket voor wetenschappelijk computergebruik en onderhouders optimaliseren het zeer voor prestaties.

Pandas’s is gebouwd op de top van NumPy en biedt handige abstracties op hoog niveau. Het uitvoeren van directe bewerkingen op NumPy-datastructuren op lager niveau zal dus bijna altijd sneller zijn dan het uitvoeren van vergelijkbare bewerkingen op Pandas-datastructuren op hoger niveau.

Gerelateerde Artikelen - Pandas DataFrame

  • Hoe Pandas DataFrame-kolom verwijderen
  • Hoe de DataFrame-kolom naar Datetime in Pandas's te converteren
  • Gerelateerde Artikelen - Pandas DataFrame Column

  • Hoe Pandas DataFrame-kolom verwijderen
  • Hoe de DataFrame-kolom naar Datetime in Pandas's te converteren