Cet article explique comment effectuer une conversion entre les listes pandas D๐โ๐ญโ๐โF๐ซโ๐โ๐ฆโ๐โ / S๐โ๐ซโ๐ขโ๐โ๐ฌโ et les listes intรฉgrรฉes Python.
- Convertir les listes en D๐โ๐ญโ๐โF๐ซโ๐โ๐ฆโ๐โ et S๐โ๐ซโ๐ขโ๐โ๐ฌโ
- Convertir D๐โ๐ญโ๐โF๐ซโ๐โ๐ฆโ๐โ et S๐โ๐ซโ๐ขโ๐โ๐ฌโ en listes
- Convertissez S๐โ๐ซโ๐ขโ๐โ๐ฌโ en liste en utilisant ๐ญโ๐จโ๐ฅโ๐ขโ๐ฌโ๐ญโ() ou ๐ญโ๐จโ_๐ฅโ๐ขโ๐ฌโ๐ญโ()
- Convertir D๐โ๐ญโ๐โF๐ซโ๐โ๐ฆโ๐โ en liste en utilisant ๐ฏโ๐โ๐ฅโ๐ฎโ๐โ๐ฌโ et ๐ญโ๐จโ๐ฅโ๐ขโ๐ฌโ๐ญโ()
- Convertissez S๐โ๐ซโ๐ขโ๐โ๐ฌโ et D๐โ๐ญโ๐โF๐ซโ๐โ๐ฆโ๐โ en listes incluant ๐ขโ๐งโ๐โ๐โ๐ฑโ et ๐โ๐จโ๐ฅโ๐ฎโ๐ฆโ๐งโ๐ฌโ
- Convertir ๐ขโ๐งโ๐โ๐โ๐ฑโ et ๐โ๐จโ๐ฅโ๐ฎโ๐ฆโ๐งโ๐ฌโ en listes
Bien que le terme ยซ convertir ยป soit utilisรฉ pour plus de simplicitรฉ, le processus implique en rรฉalitรฉ la crรฉation d’un nouvel objet d’un type diffรฉrent, tandis que l’objet d’origine reste inchangรฉ.
Pour les conversions entre D๐โ๐ญโ๐โF๐ซโ๐โ๐ฆโ๐โ / S๐โ๐ซโ๐ขโ๐โ๐ฌโ et les tableaux NumPy ( ๐งโ๐โ๐โ๐ซโ๐ซโ๐โ๐ฒโ ), ainsi qu’entre D๐โ๐ญโ๐โF๐ซโ๐โ๐ฆโ๐โ et S๐โ๐ซโ๐ขโ๐โ๐ฌโ , reportez-vous aux articles suivants.
- Conversion entre pandas DataFrame/Series et tableau NumPy
- pandas : Conversion entre DataFrame et Series
La version de pandas utilisรฉe dans cet article est la suivante. Notez que les fonctionnalitรฉs peuvent varier selon les versions.
import pandas as pd print(pd.__version__) # 2.1.4
Convertir les listes en D๐โ๐ญโ๐โF๐ซโ๐โ๐ฆโ๐โ et S๐โ๐ซโ๐ขโ๐โ๐ฌโ
Convertir des listes en D๐โ๐ญโ๐โF๐ซโ๐โ๐ฆโ๐โ et S๐โ๐ซโ๐ขโ๐โ๐ฌโ en utilisant ๐ฉโ๐โ.D๐โ๐ญโ๐โF๐ซโ๐โ๐ฆโ๐โ() et ๐ฉโ๐โ.S๐โ๐ซโ๐ขโ๐โ๐ฌโ()
En spรฉcifiant une liste comme premier argument dans les constructeurs ๐ฉโ๐โ.S๐โ๐ซโ๐ขโ๐โ๐ฌโ() ou ๐ฉโ๐โ.D๐โ๐ญโ๐โF๐ซโ๐โ๐ฆโ๐โ() , un S๐โ๐ซโ๐ขโ๐โ๐ฌโ ou D๐โ๐ญโ๐โF๐ซโ๐โ๐ฆโ๐โ est gรฉnรฉrรฉ ร partir de la liste.
l_1d = [0, 10, 20] print(pd.Series(l_1d)) # 0 0 # 1 10 # 2 20 # dtype: int64 l_2d = [[0, 10, 20], [30, 40, 50]] print(pd.DataFrame(l_2d)) # 0 1 2 # 0 0 10 20 # 1 30 40 50
La spรฉcification d’une liste unidimensionnelle directement dans ๐ฉโ๐โ.D๐โ๐ญโ๐โF๐ซโ๐โ๐ฆโ๐โ() crรฉe une liste D๐โ๐ญโ๐โF๐ซโ๐โ๐ฆโ๐โ ร une seule colonne . Lorsqu’il est spรฉcifiรฉ comme [๐จโ๐งโ๐โ_๐โ๐ขโ๐ฆโ๐โ๐งโ๐ฌโ ๐ขโ๐จโ๐งโ๐โ๐ฅโ_๐ฅโ๐ขโ๐ฌโ๐ญโ] , il crรฉe un D๐โ๐ญโ๐โF๐ซโ๐โ๐ฆโ๐โ sur une seule ligne .
print(pd.DataFrame(l_1d)) # 0 # 0 0 # 1 10 # 2 20 print(pd.DataFrame([l_1d])) # 0 1 2 # 0 0 10 20
Vous pouvez transposer une liste bidimensionnelle (liste de listes).
print(pd.DataFrame(zip(*l_2d))) # 0 1 # 0 0 30 # 1 10 40 # 2 20 50
Spรฉcifiez les noms de ligne et de colonne : ๐ขโ๐งโ๐โ๐โ๐ฑโ , ๐โ๐จโ๐ฅโ๐ฎโ๐ฆโ๐งโ๐ฌโ
Les noms de lignes peuvent รชtre spรฉcifiรฉs avec l’argument ๐ขโ๐งโ๐โ๐โ๐ฑโ et les noms de colonnes avec l’argument ๐โ๐จโ๐ฅโ๐ฎโ๐ฆโ๐งโ๐ฌโ .
print(pd.Series(l_1d, index=['X', 'Y', 'Z'])) # X 0 # Y 10 # Z 20 # dtype: int64 print(pd.DataFrame(l_2d, index=['X', 'Y'], columns=['A', 'B', 'C'])) # A B C # X 0 10 20 # Y 30 40 50
Il est รฉgalement possible de dรฉfinir ou de modifier les ๐ขโ๐งโ๐โ๐โ๐ฑโ et ๐โ๐จโ๐ฅโ๐ฎโ๐ฆโ๐งโ๐ฌโ aprรจs avoir crรฉรฉ un S๐โ๐ซโ๐ขโ๐โ๐ฌโ ou un D๐โ๐ญโ๐โF๐ซโ๐โ๐ฆโ๐โ .
Spรฉcifiez le type de donnรฉes : ๐โ๐ญโ๐ฒโ๐ฉโ๐โ
Le type de donnรฉes ( ๐โ๐ญโ๐ฒโ๐ฉโ๐โ ) de chaque colonne d’un D๐โ๐ญโ๐โF๐ซโ๐โ๐ฆโ๐โ , ainsi que celui d’un S๐โ๐ซโ๐ขโ๐โ๐ฌโ , est automatiquement dรฉterminรฉ en fonction des valeurs de la liste.
Par exemple, si une colonne contient un mรฉlange d’entiers ( ๐ขโ๐งโ๐ญโ ) et de nombres ร virgule flottante ( ๐โ๐ฅโ๐จโ๐โ๐ญโ ), le type de donnรฉes de la colonne devient ๐โ๐ฅโ๐จโ๐โ๐ญโ , et si elle contient un mรฉlange de nombres et de chaรฎnes, le type de donnรฉes devient ๐จโ๐โ๐ฃโ๐โ๐โ๐ญโ .
l_2d_multi = [[0, 0.0, 'abc', 123, 'abc'], [10, 0.1, 'xyz', 1.23, 100]] print(pd.DataFrame(l_2d_multi)) # 0 1 2 3 4 # 0 0 0.0 abc 123.00 abc # 1 10 0.1 xyz 1.23 100 print(pd.DataFrame(l_2d_multi).dtypes) # 0 int64 # 1 float64 # 2 object # 3 float64 # 4 object # dtype: object
Il est รฉgalement possible de prรฉciser le type de donnรฉes ร l’aide de l’argument ๐โ๐ญโ๐ฒโ๐ฉโ๐โ de ๐ฉโ๐โ.D๐โ๐ญโ๐โF๐ซโ๐โ๐ฆโ๐โ() ou ๐ฉโ๐โ.S๐โ๐ซโ๐ขโ๐โ๐ฌโ() .
print(pd.DataFrame(l_2d, dtype=float)) # 0 1 2 # 0 0.0 10.0 20.0 # 1 30.0 40.0 50.0
Pour plus de dรฉtails sur les types de donnรฉes ( ๐โ๐ญโ๐ฒโ๐ฉโ๐โ ) dans pandas, reportez-vous ร l’article suivant.
Pour les listes contenant des รฉtiquettes
Pour crรฉer un S๐โ๐ซโ๐ขโ๐โ๐ฌโ ร partir d’une liste de paires รฉtiquette-valeur, dรฉcomposez d’abord la liste en ๐ฅโ๐โ๐โ๐โ๐ฅโ๐ฌโ et ๐ฏโ๐โ๐ฅโ๐ฎโ๐โ๐ฌโ , puis transmettez-les ร ๐ฉโ๐โ.S๐โ๐ซโ๐ขโ๐โ๐ฌโ() .
l_1d_index = [['X', 0], ['Y', 1], ['Z', 2]] index, values = zip(*l_1d_index) print(index) # ('X', 'Y', 'Z') print(values) # (0, 1, 2) print(pd.Series(values, index=index)) # X 0 # Y 1 # Z 2 # dtype: int64
Pour crรฉer un D๐โ๐ญโ๐โF๐ซโ๐โ๐ฆโ๐โ ร partir d’une liste qui inclut des รฉtiquettes et plusieurs valeurs, chargez d’abord la liste entiรจre dans le D๐โ๐ญโ๐โF๐ซโ๐โ๐ฆโ๐โ , puis dรฉfini ๐ขโ๐งโ๐โ๐โ๐ฑโ ร l’aide de la mรฉthode ๐ฌโ๐โ๐ญโ_๐ขโ๐งโ๐โ๐โ๐ฑโ() .
l_2d_index = [['X', 0, 0.0], ['Y', 1, 0.1], ['Z', 2, 0.2]] df_index = pd.DataFrame(l_2d_index, columns=['idx', 'A', 'B']) print(df_index) # idx A B # 0 X 0 0.0 # 1 Y 1 0.1 # 2 Z 2 0.2 print(df_index.set_index('idx')) # A B # idx # X 0 0.0 # Y 1 0.1 # Z 2 0.2
Si la liste d’origine inclut รฉgalement des noms de colonnes, utilisez la premiรจre ligne pour l’argument ๐โ๐จโ๐ฅโ๐ฎโ๐ฆโ๐งโ๐ฌโ et le reste des lignes (obtenues par dรฉcoupage) comme premier argument.
l_2d_index_columns = [['idx', 'A', 'B'], ['X', 0, 0.0], ['Y', 1, 0.1], ['Z', 2, 0.2]] df_index_columns = pd.DataFrame(l_2d_index_columns[1:], columns=l_2d_index_columns[0]) print(df_index_columns) # idx A B # 0 X 0 0.0 # 1 Y 1 0.1 # 2 Z 2 0.2 print(df_index_columns.set_index('idx')) # A B # idx # X 0 0.0 # Y 1 0.1 # Z 2 0.2
Convertir D๐โ๐ญโ๐โF๐ซโ๐โ๐ฆโ๐โ et S๐โ๐ซโ๐ขโ๐โ๐ฌโ en listes
Convertissez S๐โ๐ซโ๐ขโ๐โ๐ฌโ en liste en utilisant ๐ญโ๐จโ๐ฅโ๐ขโ๐ฌโ๐ญโ() ou ๐ญโ๐จโ_๐ฅโ๐ขโ๐ฌโ๐ญโ()
S๐โ๐ซโ๐ขโ๐โ๐ฌโ peut รชtre converti en liste ร l’aide des mรฉthodes ๐ญโ๐จโ๐ฅโ๐ขโ๐ฌโ๐ญโ() ou ๐ญโ๐จโ_๐ฅโ๐ขโ๐ฌโ๐ญโ() .
- pandas.Series.tolist โ documentation de pandas 2.1.4
- pandas.Series.to_list โ documentation de pandas 2.1.4
s = pd.Series([0, 10, 20]) print(s) # 0 0 # 1 10 # 2 20 # dtype: int64 print(s.tolist()) # [0, 10, 20] print(s.to_list()) # [0, 10, 20]
Convertir D๐โ๐ญโ๐โF๐ซโ๐โ๐ฆโ๐โ en liste en utilisant ๐ฏโ๐โ๐ฅโ๐ฎโ๐โ๐ฌโ et ๐ญโ๐จโ๐ฅโ๐ขโ๐ฌโ๐ญโ()
ร partir de la version 2.1.4 de pandas, D๐โ๐ญโ๐โF๐ซโ๐โ๐ฆโ๐โ ne dispose pas des mรฉthodes ๐ญโ๐จโ๐ฅโ๐ขโ๐ฌโ๐ญโ() ou ๐ญโ๐จโ_๐ฅโ๐ขโ๐ฌโ๐ญโ() . Pour convertir un D๐โ๐ญโ๐โF๐ซโ๐โ๐ฆโ๐โ en ๐ฅโ๐ขโ๐ฌโ๐ญโ , convertissez-le d’abord en un tableau NumPy ( ๐งโ๐โ๐โ๐ซโ๐ซโ๐โ๐ฒโ ) en utilisant l’attribut ๐ฏโ๐โ๐ฅโ๐ฎโ๐โ๐ฌโ , puis utilisez l’attribut Mรฉthode ๐ญโ๐จโ๐ฅโ๐ขโ๐ฌโ๐ญโ() de ๐งโ๐โ๐โ๐ซโ๐ซโ๐โ๐ฒโ .
- Conversion entre pandas DataFrame/Series et tableau NumPy
- Conversion entre un tableau NumPy et une liste Python
df = pd.DataFrame([[0, 10, 20], [30, 40, 50]]) print(df) # 0 1 2 # 0 0 10 20 # 1 30 40 50 print(df.values.tolist()) # [[0, 10, 20], [30, 40, 50]]
Convertissez S๐โ๐ซโ๐ขโ๐โ๐ฌโ et D๐โ๐ญโ๐โF๐ซโ๐โ๐ฆโ๐โ en listes incluant ๐ขโ๐งโ๐โ๐โ๐ฑโ et ๐โ๐จโ๐ฅโ๐ฎโ๐ฆโ๐งโ๐ฌโ
Pour conserver le ๐ขโ๐งโ๐โ๐โ๐ฑโ dans la liste, utilisez la mรฉthode ๐ซโ๐โ๐ฌโ๐โ๐ญโ_๐ขโ๐งโ๐โ๐โ๐ฑโ() pour rรฉinitialiser le ๐ขโ๐งโ๐โ๐โ๐ฑโ et le transformer en colonne de donnรฉes.
s_index = pd.Series([0, 1, 2], index=['X', 'Y', 'Z']) print(s_index) # X 0 # Y 1 # Z 2 # dtype: int64 print(s_index.reset_index()) # index 0 # 0 X 0 # 1 Y 1 # 2 Z 2 print(s_index.reset_index().values.tolist()) # [['X', 0], ['Y', 1], ['Z', 2]]
df_index = pd.DataFrame([[0, 1, 2], [3, 4, 5]], index=['A', 'B'], columns=['X', 'Y', 'Z']) print(df_index) # X Y Z # A 0 1 2 # B 3 4 5 print(df_index.reset_index()) # index X Y Z # 0 A 0 1 2 # 1 B 3 4 5 print(df_index.reset_index().values.tolist()) # [['A', 0, 1, 2], ['B', 3, 4, 5]]
Depuis la version 2.1.4, D๐โ๐ญโ๐โF๐ซโ๐โ๐ฆโ๐โ n’a aucune mรฉthode pour rรฉinitialiser ๐โ๐จโ๐ฅโ๐ฎโ๐ฆโ๐งโ๐ฌโ . Pour inclure ร la fois ๐ขโ๐งโ๐โ๐โ๐ฑโ et ๐โ๐จโ๐ฅโ๐ฎโ๐ฆโ๐งโ๐ฌโ dans la liste, appliquez d’abord ๐ซโ๐โ๐ฌโ๐โ๐ญโ_๐ขโ๐งโ๐โ๐โ๐ฑโ() , puis transposez en utilisant .T , appliquez ๐ซโ๐โ๐ฌโ๐โ๐ญโ_๐ขโ๐งโ๐โ๐โ๐ฑโ() ร nouveau, et finalement inverser la transposition avec .T . Une mรฉthode plus efficace existe peut-รชtre.
print(df_index.reset_index().T.reset_index().T.values.tolist()) # [['index', 'X', 'Y', 'Z'], ['A', 0, 1, 2], ['B', 3, 4, 5]]
Convertir ๐ขโ๐งโ๐โ๐โ๐ฑโ et ๐โ๐จโ๐ฅโ๐ฎโ๐ฆโ๐งโ๐ฌโ en listes
L’attribut ๐ขโ๐งโ๐โ๐โ๐ฑโ de S๐โ๐ซโ๐ขโ๐โ๐ฌโ , ainsi que les attributs ๐ขโ๐งโ๐โ๐โ๐ฑโ et ๐โ๐จโ๐ฅโ๐ฎโ๐ฆโ๐งโ๐ฌโ de D๐โ๐ญโ๐โF๐ซโ๐โ๐ฆโ๐โ , sont tous de type Ils peuvent รชtre convertis en listes ร l’aide des mรฉthodes ๐ญโ๐จโ๐ฅโ๐ขโ๐ฌโ๐ญโ ( ) ou ๐ญโ๐จโ_๐ฅโ๐ขโ๐ฌโ๐ญโ() .
- pandas.Index.tolist โ documentation de pandas 2.1.4
- pandas.Index.to_list โ documentation de pandas 2.1.4
s_index = pd.Series([0, 1, 2], index=['X', 'Y', 'Z']) print(s_index) # X 0 # Y 1 # Z 2 # dtype: int64 print(s_index.index) # Index(['X', 'Y', 'Z'], dtype='object') print(s_index.index.tolist()) # ['X', 'Y', 'Z']
df_index = pd.DataFrame([[0, 1, 2], [3, 4, 5]], index=['A', 'B'], columns=['X', 'Y', 'Z']) print(df_index) # X Y Z # A 0 1 2 # B 3 4 5 print(df_index.index) # Index(['A', 'B'], dtype='object') print(df_index.index.tolist()) # ['A', 'B'] print(df_index.columns) # Index(['X', 'Y', 'Z'], dtype='object') print(df_index.columns.tolist()) # ['X', 'Y', 'Z']
Notez qu’un I๐งโ๐โ๐โ๐ฑโ permet une itรฉration directe dans une boucle ๐โ๐จโ๐ซโ pour extraire des รฉlรฉments et prend en charge l’utilisation de [] pour une rรฉcupรฉration spรฉcifique basรฉe sur un index. Bien que le dรฉcoupage soit possible, la modification d’รฉlรฉments directement dans un I๐งโ๐โ๐โ๐ฑโ ne l’est pas. Ainsi, la conversion en liste n’est pas nรฉcessaire si vous avez uniquement besoin d’accรฉder ร des รฉlรฉments.
for i in df_index.columns: print(i, type(i)) # X <class 'str'> # Y <class 'str'> # Z <class 'str'> print(df_index.columns[0]) # X print(df_index.columns[:2]) # Index(['X', 'Y'], dtype='object') # df_index.columns[0] = 'x' # TypeError: Index does not support mutable operations
