J'ai pris les statistiques d'immigration du ministère de la Justice et créé Version simple de notebok à traiter.
J'ai beaucoup de commentaires, mais je pense qu'il est pratique de le modifier car il n'est pas classé.
Collez le code jupyter ci-dessous.
#Définissez les paramètres minimaux de la bibliothèque.
import pandas as pd #Chargement d'une bibliothèque de traitement de données appelée pandas
import re #Pour les expressions régulières
from IPython.display import display, HTML #Charger la bibliothèque pour l'affichage
#Obtenez les données Excel et mettez-les dans des pandas. Cela seul va bien
#L'original Excel est la prémisse d'une feuille.
moto= pd.read_excel('http://www.e-stat.go.jp/SG1/estat/GL08020103.do?_xlsDownload_&fileId=000007747517&releaseCount=1')
#La date est 2016 8, donc à titre d'information supplémentaire, année,Réglez le mois. (Il est bon de faire défiler et de l'obtenir automatiquement.)
year = 2016
month = 8
#Tout d'abord, vérifiez le nombre total
count_all = int(moto.iloc[2,3])
#Vérifiez le nombre total( count_Puisque tout est un entier, affichez-le sous forme de chaîne de caractères et affichez-le au format HTML. )
display(HTML('<h1>Nombre total= ' + str(count_all) + '<h1>'))
#moto.head()Ensuite, vous pouvez voir rapidement les 5 premières lignes de données.
#Le résultat de la dernière ligne d'exécution de la cellule s'affiche. impression(moto.head())Vous n'êtes pas obligé de le faire.
#Vous pouvez voir qu'il y a des lignes et des colonnes supplémentaires lors de la synthèse.
moto.head()
#colonnes Information Le nom du port est tiré du 5ème (Kushiro) de la première ligne.
columns = moto.iloc[1,4:]
#Il existe divers problèmes tels que les sauts de ligne insérés simplement par extraction.
display(columns[12:18])
#l'index est sans nom:Comme il est 16, il est difficile à comprendre, alors changez-le en numéro de série. C'est juste une question d'apparence, vous n'avez donc pas à le faire.
columns.index = range(0,len(columns))
display(columns[12:18])
#Saut de ligne, vide,Etc. sont supprimés.
columns = columns.apply(lambda x: x.replace("\n",'').replace(' ',''))
display(columns[12:18])
# index (Pays)Créer un. (Vous n'êtes pas obligé de le créer, mais vous pouvez l'ajouter car il est pratique pour supprimer des données de ligne.)
idx = moto.iloc[3:,1]
#Saut de ligne, vide,Etc. sont supprimés.
idx = idx.apply(lambda x: x.replace("\n",'').replace(' ',''))
display(idx[12:18])
#Pays(country), Port),Nombre d'immigrants(num)Crée les données formatées de.
#Tout d'abord, créez des données vides.
xdf = pd.DataFrame(columns=['country','port','num'])
#Pays disposé verticalement,port,num
for i in range(0,len(columns)):
x = pd.DataFrame(idx)
x.columns = ['country']
x['port'] = columns[i]
x['num'] = moto.iloc[4:,4 + i]
x.index = idx
x.index.name = 'country'
xdf = xdf.append(x)
display(xdf.head(210).tail(10))
#Supprimer les sous-totaux régionaux Les sous-totaux sont NaN (pas de données).
area = ['Asie', 'L'Europe ','Afrique', 'Amérique du Nord', 'Amérique du Sud', 'Océanie']
#J'utilise l'index pour le supprimer. C'est plus facile que de spécifier dans la recherche. en place=Je réécris xdf directement avec True.
xdf.drop(area,inplace=True)
display(xdf.head(210).tail(10))
#Ajoutez les éléments de l'année et du mois.
xdf['year'] = year
xdf['month'] = month
display(xdf.head(210).tail(10))
#Calculer le nombre total pour confirmation
display(HTML('<h1>' + str(xdf['num'].sum()) + '</h1>'))
#Enregistrez le fichier formaté dans un fichier Excel.
xdf.to_excel('immigration.xlsx')
Recommended Posts