[Python] J'ai essayé de visualiser le prix en argent de "ONE PIECE" plus de 100 millions de caractères avec matplotlib.

Aperçu

Les prix tels que le père de Roger et Barbe Blanche ont été libérés, et je me demandais à quel point la différence entre Ruffy qui vise le roi des pirates et les grands pirates est, alors j'ai décidé de le visualiser comme une pratique de matplotlib. ..

environnement

・ Python 3.8.0 ・ Windows10 ・ Cahier Jupyter

Matériel de référence

・ Étudiez le logarithme avec la puissance de combat de Dragon Ball et matplotlib ・ [2019 dernière version] Classement des prix "One Piece"! Enfin la prime de Roger est découverte

Écoulement brutal

  1. Concours ・ Acquérir le nom du personnage (grattage)
  2. Visualiser (matplotlib)

1. Concours ・ Acquérir le nom du personnage (grattage)

J'ai reçu un prix d'une seule pièce de l'article ici.

Le déroulement du grattage est le suivant.

  1. Obtenez tous les prix des personnages
  2. Obtenez tous les noms de personnages Seuls plus de 300 millions de personnages reçoivent le nom et le prix du personnage

scraping_onepiece.py


import requests
from bs4 import BeautifulSoup
import pandas as pd
import re
import time

list_df = pd.DataFrame(columns=['Personnage', 'Tirages au sort'])

url = 'https://ciatr.jp/topics/311415'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'lxml')
#Obtenez tous les tirages au sort des personnages
bounty_tags = soup.find_all('div', class_='component ArticleComponentHead')
bounty_tags = soup.find_all('h3')

#Inclus dans l'élément h3['Information sur le travail', 'Informations sur l'article', 'À propos de ciatr']Ignorer
bounty_tags = [tag.text for tag in bounty_tags if tag.text not in ['Information sur le travail', 'Informations sur l'article', 'À propos de ciatr']]

#Attendez 1 seconde
time.sleep(1)

#Obtenir le nom du personnage
name_tags = soup.find_all('div', class_='component ArticleComponentHead scroll-margin')

name_tags = [tag.text for tag in name_tags if tag.text not in ['Je veux connaître le montant des prix des joueurs puissants qui apparaissent dans "ONE PIECE"!',
																'Il y a encore de grands noms avec des prix inconnus! Le montant maximum est susceptible d'être mis à jour']]

# {Le nom du personnage:Tirages au sort}Créer un dictionnaire
master_table = dict()

for bounty_tag, name_tag in zip(bounty_tags, name_tags):

	#Supprimer les caractères supplémentaires avec des expressions régulières
	bounty = re.sub(r'[Tirage au sort baies originales ou plus]', '', bounty_tag)

	#Exclut les personnages dont les prix ne dépassent pas 100 millions
	if 'Milliard' in bounty:

		#Après cela, l'argent du prix sera utilisé dans matplotlib, alors convertissez-le en entier.
		oku_ind = bounty.find("Milliard")
		man_ind = bounty.find("Dix mille")

		oku = bounty[:oku_ind]
		
		if bounty[oku_ind + 1:man_ind] != '':
			man = bounty[oku_ind + 1:man_ind]
		else:
			man = 0

		bounty = int(oku) * 100000000 + int(man) * 10000

		name = re.sub(r'[【】0-9ème place]', '', name_tag)

		#Ajouter au dictionnaire
		master_table[name] = bounty

for name, bounty in master_table.items():
	tmp_se = pd.DataFrame([name, bounty], index=list_df.columns).T
	list_df = list_df.append(tmp_se)

print(list_df)

#csv enregistrer
list_df.to_csv('onepiece.csv', mode = 'a', encoding='cp932')

2. Visualiser (matplotlib)

malplotlib_onepiece.ipynb


#Description à spécifier lors du dessin d'un graphique sur Jupyter Notebook
%matplotlib inline

python


import matplotlib.pyplot as plt
import pandas as pd

python


plt.rcParams["font.family"] = "IPAexGothic"

L'erreur de police est [ici](https://datumstudio.jp/blog/matplotlib%E3%81%AE%E6%97%A5%E6%9C%AC%E8%AA%9E%E6%96%87%E5 % AD% 97% E5% 8C% 96% E3% 81% 91% E3% 82% 92% E8% A7% A3% E6% B6% 88% E3% 81% 99% E3% 82% 8Fenêtres% E7% B7 J'ai fait référence à% A8).

[Éliminez les caractères japonais brouillés dans matplotlib (édition Windows)](https://datumstudio.jp/blog/matplotlib%E3%81%AE%E6%97%A5%E6%9C%AC%E8%AA% 9E% E6% 96% 87% E5% AD% 97% E5% 8C% 96% E3% 81% 91% E3% 82% 92% E8% A7% A3% E6% B6% 88% E3% 81% 99% E3% 82% 8Fenêtres% E7% B7% A8)

python


df_file = pd.read_csv('onepiece.csv', encoding='cp932')

python


df_name = df_file['Personnage'].tolist()
df_bounty = df_file['Tirages au sort'].tolist()

python


d = []

for name, bounty in zip(df_name, df_bounty):
    data = [name, bounty]
    d.append(data)

python


#Ordre décroissant des tirages au sort
name = list(reversed([x[0] for x in d]))
bounty = list(reversed([x[1] for x in d]))

python


#Taille globale de la figure
plt.figure(figsize=(12, len(d)/2))
#Graphique à barres horizontales
plt.barh(name, bounty)
#Le titre du graphique entier
plt.title('Classement du concours One Piece')
#x titre de l'étiquette
plt.xlabel('Tirages au sort(Milliard)')
#Définir l'échelle de l'axe des x (prix)
plt.xscale('log')
plt.show()

onepiece.png

Si vous essayez de le visualiser, la force des quatre empereurs n'est pas étrange. J'attends toujours avec impatience les prix non divulgués de Dragon et Master Rayleigh. À mon avis, le dragon bounty est le patron d'une organisation qui tente de vaincre directement le gouvernement mondial, alors j'aimerais voir 5 milliards.

en conclusion

Cette fois, j'ai appris le grattage et le malplotlib dans le but de visualiser le personnage d'une seule pièce d'un milliard de dollars. Il était difficile et long de convertir des nombres chinois dans une chaîne de caractères en nombres arithmétiques par grattage. La prochaine fois, j'aimerais apprendre le regroupement et l'analyse des émotions de l'apprentissage non supervisé. Cela fait longtemps, mais merci d'avoir lu jusqu'ici. Si vous constatez des erreurs, je vous serais très reconnaissant de bien vouloir les signaler dans les commentaires.

Recommended Posts

[Python] J'ai essayé de visualiser le prix en argent de "ONE PIECE" plus de 100 millions de caractères avec matplotlib.
J'ai essayé de visualiser facilement les tweets de JAWS DAYS 2017 avec Python + ELK
J'ai essayé de trouver l'entropie de l'image avec python
[Python] J'ai essayé de visualiser la relation de suivi de Twitter
J'ai essayé d'améliorer l'efficacité du travail quotidien avec Python
J'ai essayé d'obtenir le code d'authentification de l'API Qiita avec Python.
(Python) J'ai essayé d'analyser 1 million de mains ~ J'ai essayé d'estimer le nombre d'AA ~
J'ai essayé de rationaliser le rôle standard des nouveaux employés avec Python
J'ai essayé de visualiser le texte du roman "Weather Child" avec Word Cloud
J'ai essayé d'obtenir les informations sur le film de l'API TMDb avec Python
J'ai essayé d'envoyer automatiquement la littérature du nouveau virus corona à LINE avec Python
J'ai essayé de résumer comment utiliser matplotlib de python
J'ai essayé de toucher un fichier CSV avec Python
J'ai essayé de résoudre Soma Cube avec python
J'ai essayé de visualiser les informations spacha de VTuber
J'ai essayé de résoudre le problème avec Python Vol.1
J'ai essayé de résumer les opérations de chaîne de Python
Python pratique 100 coups J'ai essayé de visualiser l'arbre de décision du chapitre 5 en utilisant graphviz
J'ai essayé d'automatiser la mise à jour de l'article du blog Livedoor avec Python et sélénium.
J'ai essayé de visualiser les caractéristiques des nouvelles informations sur les personnes infectées par le virus corona avec wordcloud
J'ai essayé de visualiser les données de course du jeu de course (Assetto Corsa) avec Plotly
J'ai essayé de comparer la vitesse de traitement avec dplyr de R et pandas de Python
Le 15e temps réel hors ligne, j'ai essayé de résoudre le problème de l'écriture avec python
J'ai essayé la "correction gamma" de l'image avec Python + OpenCV
J'ai essayé de simuler la propagation de l'infection avec Python
J'ai essayé de trouver la moyenne de plusieurs colonnes avec TensorFlow
[Python] J'ai essayé de visualiser des tweets sur Corona avec WordCloud
J'ai essayé de résoudre le problème de F02 comment écrire en temps réel hors ligne avec Python
J'ai essayé de visualiser la consommation électrique de ma maison avec Nature Remo E lite
J'ai écrit un doctest dans "J'ai essayé de simuler la probabilité d'un jeu de bingo avec Python"
J'ai essayé de gratter le classement du calendrier de l'avent Qiita avec Python
J'ai essayé de résoudre l'édition du débutant du livre des fourmis avec python
J'ai essayé d'automatiser l'arrosage du pot avec Raspberry Pi
Depuis que le stock a plongé en raison de l'influence du nouveau virus corona, j'ai essayé de visualiser les performances de ma fiducie d'investissement avec Python.
Je veux sortir le début du mois prochain avec Python
J'ai essayé de créer une liste de nombres premiers avec python
J'ai essayé d'agrandir la taille du volume logique avec LVM
J'ai essayé de collecter automatiquement des images de Kanna Hashimoto avec Python! !!
J'ai essayé de visualiser la condition commune des téléspectateurs de la chaîne VTuber
PhytoMine-I a essayé d'obtenir les informations génétiques de la plante avec Python
J'ai essayé de vérifier l'identification du locuteur par l'API de reconnaissance du locuteur d'Azure Cognitive Services avec Python. # 1
J'ai essayé de vérifier l'identification du locuteur par l'API de reconnaissance du locuteur d'Azure Cognitive Services avec Python. # 2
J'ai essayé de résumer le contenu de chaque paquet enregistré par Python pip en une seule ligne
J'ai essayé de résoudre la première question de l'examen d'entrée en mathématiques 2019 de l'Université de Tokyo avec python sympy
J'ai essayé de visualiser AutoEncoder avec TensorFlow
J'ai essayé de visualiser la tranche d'âge et la distribution des taux d'Atcoder
J'ai essayé avec les 100 meilleurs packages PyPI> J'ai essayé de représenter graphiquement les packages installés sur Python
J'ai essayé de vérifier et d'analyser l'accélération de Python par Cython
J'ai essayé d'analyser la négativité de Nono Morikubo. [Comparer avec Posipa]
J'ai essayé de visualiser le modèle avec la bibliothèque d'apprentissage automatique low-code "PyCaret"
J'ai essayé de visualiser tous les arbres de décision de la forêt aléatoire avec SVG
J'ai essayé de prédire le comportement du nouveau virus corona avec le modèle SEIR.
J'ai essayé de sortir la liste rpm de la destination de connexion SSH sur une feuille Excel avec Python + openpyxl.
J'ai essayé d'obtenir et d'analyser les données statistiques de la nouvelle Corona avec Python: données de l'Université John's Hopkins
Comme c'est le 20e anniversaire de la formation, j'ai essayé de visualiser les paroles de Parfum avec Word Cloud
J'ai essayé de "lisser" l'image avec Python + OpenCV