[PYTHON] Exporter la trame de données pandas vers Excel

Utilisez pandas'to_excel` pour exporter le bloc de données vers Excel.

Tout d'abord, assurez-vous de pouvoir importer les modules Python requis.

import pandas as pd
import matplotlib.pyplot as plt
from pandas.io import wb
import xlsxwriter

Lire les données

Utilisez l'API de la Banque mondiale pour obtenir la population et le PIB américains et japonais. La chaîne d'indicateur est obtenue à partir de l'API de la Banque mondiale.

df_gdp = wb.download(indicator='NY.GDP.PCAP.KD', country=['US', 'JP'], start=1960, end=2013)
df_population = wb.download(indicator='SP.POP.TOTL', country=['US', 'JP'], start=1960, end=2013)

Confirmation des données

df_gdp.head(3)
NY.GDP.PCAP.KD
country year
Japan 2013 37432.840747
2012 36800.922307
2011 36203.430066
df_gdp.dtypes
NY.GDP.PCAP.KD    float64
dtype: object
df_gdp.index

MultiIndex(levels=[['Japan', 'United States'], ['1960', '1961', '1962', '1963', '1964', '1965', '1966', '1967', '1968', '1969', '1970', '1971', '1972', '1973', '1974', '1975', '1976', '1977', '1978', '1979', '1980', '1981', '1982', '1983', '1984', '1985', '1986', '1987', '1988', '1989', '1990', '1991', '1992', '1993', '1994', '1995', '1996', '1997', '1998', '1999', '2000', '2001', '2002', '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013']],
           labels=[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...], [53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, ...]],
           names=['country', 'year'])
df_gdp.describe()
NY.GDP.PCAP.KD
count 108.000000
mean 28015.188967
std 10061.123534
min 7079.439251
25% 20152.131354
50% 28858.039661
75% 35165.327764
max 45863.019564

La base de données du PIB est:

La base de données de population a une structure similaire.

Formater les données

Puisqu'il est difficile à utiliser tel quel, formatez les données.

df_gdp.unstack(level=0).head(3)
NY.GDP.PCAP.KD
country Japan United States
year
1960 7079.439251 15469.072967
1961 7728.000388 15564.690585
1962 8338.409056 16262.092906
df_gdp.unstack(level=0).describe()
NY.GDP.PCAP.KD
Japan United States
count 54.000000 54.000000
mean 25134.970999 30895.406935
std 9716.583553 9646.035006
min 7079.439251 15469.072967
25% 17457.921985 22981.450242
50% 26005.632842 30462.082595
75% 33991.192095 40658.654684
max 37432.840747 45863.019564
df_gdp.unstack(level=0).plot(figsize=(16, 4), colormap='seismic')

worldbank_to_excel_16_1.png

Les données démographiques sont converties de la même manière.

df_population.unstack(level=0).head(3)
SP.POP.TOTL
country Japan United States
year
1960 92500572 180671000
1961 94943000 183691000
1962 95832000 186538000
ax = df_population.unstack(level=0).plot(figsize=(16, 4), colormap='seismic')

worldbank_to_excel_19_0.png

Lors du calcul de la moyenne mobile sur cinq ans, il est un peu clair que la population des États-Unis augmente et celle du Japon est stable.

ax = pd.stats.moments.rolling_mean(df_population.unstack(level=0), 5).plot(figsize=(16, 4), colormap='seismic')

worldbank_to_excel_21_0.png

ax = pd.stats.moments.rolling_std(df_population.unstack(level=0)['SP.POP.TOTL'], 5).plot(figsize=(16, 4), colormap='seismic')

worldbank_to_excel_22_0.png

Combiner des données

Combine deux blocs de données.

pd.concat([df_gdp, df_population], axis=1).unstack(level=0).head(3)
NY.GDP.PCAP.KD SP.POP.TOTL
country Japan United States Japan United States
year
1960 7079.439251 15469.072967 92500572 180671000
1961 7728.000388 15564.690585 94943000 183691000
1962 8338.409056 16262.092906 95832000 186538000
df = pd.concat([df_gdp, df_population], axis=1).unstack(level=0)
df.describe()
NY.GDP.PCAP.KD SP.POP.TOTL
Japan United States Japan United States
count 54.000000 54.000000 5.400000e+01 5.400000e+01
mean 25134.970999 30895.406935 1.171442e+08 2.460156e+08
std 9716.583553 9646.035006 1.115320e+07 4.038823e+07
min 7079.439251 15469.072967 9.250057e+07 1.806710e+08
25% 17457.921985 22981.450242 1.085998e+08 2.123952e+08
50% 26005.632842 30462.082595 1.217915e+08 2.412110e+08
75% 33991.192095 40658.654684 1.268150e+08 2.813818e+08
max 37432.840747 45863.019564 1.278173e+08 3.161288e+08

Trouvons un graphique avec le PIB sur l'axe gauche et la population sur l'axe droit.

ax = df.plot(figsize=(16, 6), colormap='seismic',
                 secondary_y=[('SP.POP.TOTL', 'Japan'), ('SP.POP.TOTL', 'United States')])
    ax.set_ylabel('GDP')
    _ = ax.right_ax.set_ylabel('Population')

worldbank_to_excel_28_0.png

Il peut désormais être traité dans une seule trame de données.

En calculant la diversification par incréments de 5 ans, on peut dire que la population japonaise est atone depuis environ 1980 et que le PIB est stable depuis 1995 environ. Dans le cas des États-Unis, il y a eu une vague de croissance démographique vers 1990, et l'augmentation du PIB a culminé vers 2000, et on peut dire qu'il y a des vagues régulières.

ax = pd.stats.moments.rolling_var(df, 5).plot(subplots=True, layout=(2, 2), figsize=(16, 6))

worldbank_to_excel_31_0.png

Sortie de données

Sortie vers Excel. Appelez la méthode de la trame de données, mais xlsxwriter Le module d'exportation Excel tel que doit être installé.

df.to_excel('/data/sample.xlsx', sheet_name='Japan_US')
%ls /data
sample.xlsx

Veuillez ouvrir les données complétées dans Excel. Vous pouvez également utiliser LibreOffice.

Lors de l'exportation de plusieurs blocs de données vers des feuilles séparées, l'argument est un objet écrivain (ʻExcelWriter `) au lieu du nom de fichier. Est spécifié. Il existe un exemple dans la documentation officielle, mais recherchez plus d'informations, telles que Stack Overflow.

Environnement d'exploitation

SoftwareVersion
Python3.4.2 64bit [GCC 4.9.1]
IPython2.3.1
OSLinux 3.13.0 24 generic x86_64 with debian 8.0
numpy1.9.1
pandas0.15.1
matplotlib1.4.2
xlsxwriter0.6.4
Mon Dec 08 15:50:50 2014 UTC
$ ipython nbconvert --to markdown /data/worldbank_to_excel.ipynb

Recommended Posts

Exporter la trame de données pandas vers Excel
Excel-> pandas-> sqlite
[Pandas] Développer les chaînes de caractères en DataFrame
[Python] Ajouter le nombre total de lignes à Pandas DataFrame
Créer un bloc de données à partir d'Excel à l'aide de pandas
[Python] Comment lire des fichiers Excel avec des pandas
[python] Créer une table de pandas DataFrame vers postgres
Comment utiliser Pandas 2
Convertir 202003 en 2020-03 avec les pandas
Convertir json en Excel
Application Python: Pandas # 3: Dataframe
Convertir des chaînes numériques séparées par des virgules en nombres dans Pandas DataFrame
Conversion de Pandas DataFrame en System.Data.DataTable à l'aide de Python pour .NET
Essayez d'exploiter un fichier Excel en utilisant Python (Pandas / XlsxWriter) ①
Essayez d'exploiter un fichier Excel en utilisant Python (Pandas / XlsxWriter) ②
Ajouts clés aux pandas 1.1.0 et 1.0.0
Combinez des listes dans un DataFrame avec des pandas
Comment utiliser Pandas Rolling
Fonction pratique pour ajouter des colonnes n'importe où dans Pandas DataFrame
[Python] Comment générer une table pandas dans un fichier Excel
Comment lire un fichier Excel (.xlsx) avec Pandas [Python]
7rep - Insérer Dataframe dans Elasitcsearch
Comment coller un fichier CSV dans un fichier Excel à l'aide de Pandas
Points à noter lorsque les pandas lisent le csv de la sortie Excel
python / pandas / dataframe / Comment obtenir la ligne / colonne / index / colonne la plus simple
[Python] Comment ajouter des lignes et des colonnes à une table (pandas DataFrame)
Comment trouver l'adresse mémoire de la valeur de la trame de données Pandas
Jeu à la main Python (Pandas / DataFrame début)
Pandas / DataFrame Conseils pour une utilisation pratique
Fonction pour convertir des colonnes Excel en nombres
[Python] Mémo d'opération de pandas DataFrame
[Pandas] Enregistrer DataFrame en tant que JSON, charger JSON en tant que DataFrame
[Python] Comment utiliser la série Pandas
Créez un Dataframe pandas à partir d'une chaîne.
Enregistrer pandas.DataFrame dans Excel par feuille
Exporter la norme Google Analytics vers BigQuery
Convertir la liste en DataFrame avec python
[Introduction à Python] Utilisons les pandas
Bulk Insert Pandas DataFrame avec psycopg2
Je veux faire ○○ avec les Pandas
[Introduction à Python] Utilisons les pandas
Excel, import / export csv avec Django
[Introduction à Python] Utilisons les pandas
Comment obtenir un nom de colonne et un nom d'index spécifiques avec Pandas DataFrame
[Python / Tkinter] Rechercher Pandas DataFrame → Créer un formulaire de recherche simple à afficher