[Version terminée] Essayez de connaître le nombre d'habitants de la ville à partir de la liste d'adresses avec Python

introduction

Qiita est incroyable, n'est-ce pas?

Article précédent (https://qiita.com/kkhouse/items/d8ff2c67cef686a508f8) Donc, si j'étais un amateur mais que je publiais le code, M. konandoiruasa (https://qiita.com/konandoiruasa) J'ai reçu le code de correction de.

Je suis reconnaissant aux amateurs qui viennent de commencer à le faire.

C'est pourquoi j'ai essayé de télécharger celui modifié!

Code d'achèvement

main.py


import csv
import openpyxl
import sys
import os
import openpyxl as px


aggregate_list =["Toda-gun","Ville de Shiogama","Ville de Shiogama","Oshika-gun","Kami-gun","Karita-gun","Ville d'Iwanuma","Ville de Nanagahama","Ville de Rifu","Ville de Kurihara","Kurokawa-gun","Shibata-pistolet","Ville d'Ishimaki","Quartier Miyagino","Quartier de Wakabayashi","Quartier d'Aoba","Quartier Izumi","Quartier de Taichi","Château de Taga","Ville d'Osaki","Ville de Tomai","Ville de Higashi Matsushima","Tomiya City","Motoyoshi-gun","Ville de Natori","Pistolet à eau","Autre"]

# ~~csv → début de la conversion xlsx~~~
wb = openpyxl.Workbook()
ws = wb.active
query_word = sys.argv[1] 

f = open("./data_csv/{}.csv".format(query_word))
reader = csv.reader(f, delimiter=":")
for row in reader:
  ws.append(row)
f.close()

if not os.path.exists("./data_xlsx"):
  os.makedirs("./data_xlsx")
wb.save("./data_xlsx/{0}{1}.xlsx".format(query_word,"_Agrégat"))
# ~~csv→xlsx convert end~~~

# ~~xlsx Extraction start~~
folder = "data_xlsx"

filePath = []
for root,dirs,files in os.walk(folder):
  for fname in files:
    fnamePath = os.path.join(root,fname)
    if fnamePath.find(".xlsx")!= -1:
      filePath.append(fnamePath)
    if filePath ==[]:
      print("il n'y a pas de données!")
xlsx_files_list = [s for s in filePath if query_word in s]



#Obtenez le xlsx créé
wb = px.load_workbook(xlsx_files_list[0])
ws = wb[wb.sheetnames[0]]

#Lister toutes les adresses en xlsx
adress_list = []

table = [0] * len(aggregate_list)

for i in range(ws.max_row):
  temp = ws.cell(row=i+1, column=1).value #Parce qu'il sort plusieurs fois
  adress_list.append(temp)

  for j, name in enumerate(aggregate_list):
    if name in temp:
      table[j] += 1 #Comptez jusqu'à la place correspondante
      break
  else:
    table[26] += 1 #Autre

#Assemblez un pot de sel et un bol de sel
table[1] = table[1]+table[2]
table.pop(2)


for i,j in zip(list(range(1,3)),aggregate_list):
  ws.cell(row=i, column=7).value = j
for i,j in zip(list(range(3,27)),aggregate_list[3:]):
  ws.cell(row=i, column=7).value = j
for i,g in zip(list(range(1,28)),table):
  ws.cell(row=i, column=8).value = g

wb.save("./data_xlsx/{0}{1}.xlsx".format(query_word,"_Agrégat"))

Je pense que le code est plus applicable que la dernière fois.

Au fait

Dans cet exemple, le code ci-dessous est nécessaire pour compter Shiogama et Shiogama dans la même colonne,

main.py


#Assemblez un pot de sel et un bol de sel
table[1] = table[1]+table[2]
table.pop(2)
・
・
for i,j in zip(list(range(1,3)),aggregate_list):
  ws.cell(row=i, column=7).value = j
for i,j in zip(list(range(3,27)),aggregate_list[3:]):
  ws.cell(row=i, column=7).value = j

S'il n'y a pas de noms de ville / quartier en double dans la liste_agrégate

main.py


for i,j in zip(list(range(1,len(aggregate_list)),aggregate_list):
  ws.cell(row=i, column=7).value = j

Vous pouvez également ajouter en le fixant à. (Peut-être que si vous faites de votre mieux, vous pouvez écrire le code pour que la différence en kanji de la ville et du quartier puisse être comptée par défaut, mais il y a d'autres choses que je veux faire jusqu'à présent)

Ce que j'ai appris personnellement

J'omettrai comment utiliser OpenPyXL car il sortira si vous le vérifiez. J'ai personnellement appris le code ci-dessous.

main.py


folder = "data_xlsx"

filePath = []
for root,dirs,files in os.walk(folder):
  for fname in files:
    fnamePath = os.path.join(root,fname)
    if fnamePath.find(".xlsx")!= -1:
      filePath.append(fnamePath)
    if filePath ==[]:
      print("il n'y a pas de données!")
xlsx_files_list = [s for s in filePath if query_word in s]

os.walk ()

Comment utiliser https://www.sejuku.net/blog/63816 Ce site est facile à comprendre.

Obtenez le fichier xlsx par lot en récupérant la structure de dossiers dans le répertoire. Lorsque le programme est exécuté, si le fichier xlsx est inclus dans les arguments saisis dans le terminal, le code suivant sera exécuté. os.walk est pratique.

finalement

Je pensais que c'était écrit, mais il vaut peut-être mieux utiliser l'entrée et entrer le nom du fichier pour que l'agrégation soit terminée. Je le ferai bientôt. .. Grâce à cela, j'ai beaucoup appris sur l'utilisation d'Openpyxl. Je suis toujours amateur, mais faisons de notre mieux.

Les références: ・ Https://www.sejuku.net/blog/63816 ・ D'après le commentaire de konandoiruasa (https://qiita.com/konandoiruasa)

Recommended Posts

[Version terminée] Essayez de connaître le nombre d'habitants de la ville à partir de la liste d'adresses avec Python
Python --Trouvez le nombre de groupes dans l'expression regex
Comment identifier l'élément avec le plus petit nombre de caractères dans une liste Python?
Comment compter le nombre d'occurrences de chaque élément de la liste en Python avec poids
Comment obtenir une liste de fichiers dans le même répertoire avec python
J'ai essayé de prédire le nombre de personnes infectées par le virus corona en tenant compte de l'effet de s'abstenir de sortir
Essayez de gratter les données COVID-19 Tokyo avec Python
Comment trouver le nombre optimal de clusters pour les k-moyennes
Essayez d'obtenir la liste des fonctions du paquet Python> os
Découvrez la largeur apparente d'une chaîne en python
Obtenez le nombre d'éléments spécifiques dans la liste python
[Homologie] Comptez le nombre de trous dans les données avec Python
Essayez d'automatiser le fonctionnement des périphériques réseau avec Python
[Python] Programmation pour trouver le nombre de a dans une chaîne de caractères qui se répète un nombre spécifié de fois.
Comment connaître le nombre de GPU de python ~ Remarques sur l'utilisation du multitraitement avec pytorch ~
J'ai essayé de trouver la tendance du nombre de navires dans la baie de Tokyo à partir d'images satellites.
Comment passer le résultat de l'exécution d'une commande shell dans une liste en Python (version non bloquante)
Essayez d'obtenir la liste des fils du bulletin d'information (je n'aime pas) avec Python.
Exportez le contenu de ~ .xlsx dans le dossier en HTML avec Python
De l'introduction de JUMAN ++ à l'analyse morphologique du japonais avec Python
Changer la version active dans Pyenv d'Anaconda en Python ordinaire
Essayez de calculer la position de l'émetteur à partir du modèle de propagation des ondes radio avec python [Wi-Fi, Beacon]
Essayez de vous connecter à qiita avec Python
[Python] Essayez pydash de la version Python de lodash
Python amateur tente de résumer la liste ①
Comment connaître le nombre de processeurs sans utiliser la commande sar
Générez une liste contenant le nombre de jours du mois en cours.
[Python] Comment mettre n'importe quel nombre d'entrées standard dans la liste
Essayez d'imaginer les données d'élévation du National Land Research Institute avec Python
[Introduction à Python] Comment trier efficacement le contenu d'une liste avec le tri par liste
Recevez une liste des résultats du traitement parallèle en Python avec starmap
Découvrez le nom de la méthode qui l'a appelée à partir de la méthode qui est python
Comment passer le résultat de l'exécution d'une commande shell dans une liste en Python
Sortie du nombre de cœurs de processeur en Python
Essai du parseur d'emacs-org orgparse pour python
[Python] Trier la liste de pathlib.Path dans l'ordre naturel
Comment savoir quel type de fichier est stocké dans S3 en Python
Découvrez comment diviser uniformément un fichier avec un certain nombre de lignes
Essayez de résoudre le diagramme homme-machine avec Python
Calculez le nombre total de combinaisons avec python
Copiez la liste en Python
Trouvez le nombre de jours dans un mois
Comment trouver le coefficient de la courbe approximative passant par les sommets en Python
Essayez la touche d'un test basé sur les données avec Selenium Python Bindings et py.test
Trouvez la solution de l'équation d'ordre n avec python
Découvrez le jour par date / heure
Essayez de mesurer la position d'un objet sur le bureau (système de coordonnées réel) à partir de l'image de la caméra avec Python + OpenCV
Un commentaire que j'ai vu sur Google+ était: "Y a-t-il un moyen simple de savoir quel élément numérique d'une liste est maximum / minimum en Python?" La première ligne que j'ai trouvée était le code de la première ligne, mais la deuxième ligne est-elle meilleure?
Utilisez Ruby et Python pour trouver la probabilité qu'une carte avec un nombre naturel de 1 à 100 soit un multiple de 3 et non un multiple de 5.
Liste des outils qui peuvent être utilisés pour essayer facilement l'analyse des émotions des phrases japonaises avec Python (essayez avec google colab)
Une introduction au logiciel d'interface graphique de la plate-forme de classe fait avec Python / Tkinter! (Et de nombreux Try and Error)! (Au milieu de l'écriture)
J'ai étudié comment rationaliser le flux de travail avec Excel x Python ②
De l'état initial de CentOS8 à l'exécution de php python perl ruby avec nginx
J'ai étudié comment rationaliser le flux de travail avec Excel x Python ④
Essayez de créer une table d'enregistrement de bataille avec matplotlib à partir des données de "Schedule-kun"
J'ai essayé de savoir comment rationaliser le flux de travail avec Excel x Python ⑤