Siri praktikal Python |

Python当打之年
Python当打之年ke hadapan
2023-08-09 15:51:35668semak imbas


Dalam keluaran ini, saya ingin berkongsi dengan anda artikel pertama "Python Practical Series" : siri utama ini dan pengekstrakan biasa daripada amalan sebenar peminat Soalan akan dikemas kini secara berterusan pada masa hadapan Saya harap ia akan membantu anda Jika anda mempunyai sebarang soalan atau bidang yang memerlukan penambahbaikan, anda boleh menghantar mesej peribadi kepada editor.
Penerangan tugas:
Ambil data fail txt dalam setiap bahasa untuk melukis carta garisan Tangkapan skrin fail data.txt adalah seperti berikut (ia terlalu panjang dan saya akan potong lurus ):
Pada pandangan pertama, ia kelihatan seperti fail format json, tetapi sebenarnya bukan

Siri praktikal Python |

Mari kita ke intinya: Siri praktikal Python |
data

with open('data.txt') as f:
    data = f.read()
?️‍? 2. Kerap mengekstrak maklumat dalam kurungan kerinting {}
datas = re.findall('({.*?})',data)
Siri praktikal Python |

Siri praktikal Python |

kandungan asas bagi setiap bahasa adalah untuk mengekstrak maklumat tarikh dan maklumat data.


?️‍? 3. Ekstrak nama, beri perhatian kepada melarikan diri (')
Siri praktikal Python |
re.findall('\'(.*)\'',datas[0])[0]
perhatian kepada data dan 4 data
re.findall('(\d+(\.\d+)?)',datas[0])
Setiap 4 data ialah satu kumpulan, jadi buat gelung dengan
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]}')
?️ Kod data yang lengkap

?️ Kod lengkap?

# 处理数据
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)

?️‍? 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()

Siri praktikal Python |


Atas ialah kandungan terperinci Siri praktikal Python |. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:Python当打之年. Jika ada pelanggaran, sila hubungi admin@php.cn Padam