Série pratique Python | Extraction et dessin réguliers de données

Libérer: 2023-08-09 15:51:35
avant
639 Les gens l'ont consulté


Dans ce numéro, j'aimerais partager avec vous le premier article de "Python Practical Series"  : Extraction régulière de données et traçage, cette série concerne principalement de la pratique réelle des fans Les questions seront mises à jour continuellement à l'avenir J'espère que cela vous sera utile Si vous avez des questions ou des domaines à améliorer, vous pouvez envoyer un message privé à l'éditeur.
Description de la tâche : Prenez les données du fichier txt dans chaque langue pour dessiner un graphique linéaire La capture d'écran du fichier data.txt est la suivante (c'est trop long et je vais le couper directement. ) :

À première vue, cela ressemble à un fichier au format json, mais ce n'est pas en réalité Série pratique Python | Extraction et dessin réguliers de données

Série pratique Python | Extraction et dessin réguliers de données Entrons dans le vif du sujet :
?️‍? données

with open('data.txt') as f:
    data = f.read()
Copier après la connexion
?️‍? 2. Extrayez régulièrement les informations entre accolades {}
datas = re.findall('({.*?})',data)
Copier après la connexion
Série pratique Python | Extraction et dessin réguliers de données

Série pratique Python | Extraction et dessin réguliers de données

Le contenu est essentiellement la proportion de chaque date dans le langage de programmation. consiste à extraire des informations sur la date et des informations sur les données.


?️‍? 3. Extrayez le nom, faites attention à l'échappement (')
Série pratique Python | Extraction et dessin réguliers de données
re.findall('\'(.*)\'',datas[0])[0]
Copier après la connexion
?️‍? les données
re.findall('(\d+(\.\d+)?)',datas[0])
Copier après la connexion
Toutes les 4 données sont un groupe, alors faites simplement une boucle avec step=4 :
for i in range(0,len(datas_tmp),4):
    datas_f.append(float(datas_tmp[i+3][0]))
    dates_f.append(f'{datas_tmp[i][0]}-{datas_tmp[i+1][0]}-{datas_tmp[i+2][0]}')
Copier après la connexion

?️‍?

# 处理数据
with open('data.txt') as f:
    data = f.read()
datas = re.findall('({.*?})',data)
names = []
dates_result = []
datas_result = []
for idx,dd in enumerate(datas):
    datas_f = []
    dates_f = []
    name = re.findall('\'(.*)\'',dd)[0]
    names.append(name)
    datas_tmp = re.findall('(\d+(\.\d+)?)',dd)
    for i in range(0,len(datas_tmp),4):
        datas_f.append(float(datas_tmp[i+3][0]))
        dates_f.append(f'{datas_tmp[i][0]}-{datas_tmp[i+1][0]}-{datas_tmp[i+2][0]}')
    datas_result.append(datas_f)
    dates_result.append(dates_f)
Copier après la connexion


?️‍? 6. 绘图

绘图部分直接用matplotlib的plot循环绘制即可,代码如下:

# 绘图
plt.figure(figsize=(20, 10), dpi=100)
for i in range(len(names)):
    plt.plot(dates_result[i], datas_result[i], label=names[i])
ax = plt.gca()
ax.xaxis.set_major_locator(ticker.MultipleLocator(20))
plt.ylabel("Ratings(%)", fontdict={'size': 16})
plt.title("TIOBE Programming Community Index", fontdict={'size': 20})
plt.legend(loc='best')
plt.grid(True, linestyle='--', alpha=0.5)
plt.show()
Copier après la connexion

Série pratique Python | Extraction et dessin réguliers de données


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:Python当打之年
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal