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. ..
・ Python 3.8.0 ・ Windows10 ・ Cahier Jupyter
・ É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
J'ai reçu un prix d'une seule pièce de l'article ici.
Le déroulement du grattage est le suivant.
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')
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()
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.
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