ホームページ  >  記事  >  バックエンド開発  >  Python実践シリーズ | 定期的なデータ抽出と描画

Python実践シリーズ | 定期的なデータ抽出と描画

Python当打之年
Python当打之年転載
2023-08-09 15:51:35627ブラウズ


今回は、# についてお話します。 「Python 実践戦闘」シリーズの最初の記事「: データの定期的な抽出と描画」このシリーズは主に実際の問題から構成されています。 ご質問や改善が必要な点がある場合は、編集者にプライベート メッセージを送信してください。
タスクの説明: txt ファイルの言語データを取得して折れ線グラフを描画します。 data.txt ファイルのスクリーンショットは次のとおりです (長すぎるため、端的にカットします):

Python実践シリーズ | 定期的なデータ抽出と描画

# , json 形式のファイルのように見えます。実際には、json 形式のファイルのように見えます。上記は、
## ではありません。本題に入ります。 Python実践シリーズ | 定期的なデータ抽出と描画
## ?️‍? 1. データを読む
with open('data.txt') as f:
    data = f.read()
?️‍? 2. 中括弧内の情報を定期的に抽出します {}
datas = re.findall('({.*?})',data)
Python実践シリーズ | 定期的なデータ抽出と描画

Python実践シリーズ | 定期的なデータ抽出と描画

内容は基本的にプログラミング言語における各日付の割合ですが、次のステップでは日付情報とデータ情報を抽出します。


## ?️‍? 3. 名前を抽出します。エスケープ (') に注意してください
Python実践シリーズ | 定期的なデータ抽出と描画
re.findall('\'(.*)\'',datas[0])[0]
?️‍? 4. 日付とデータを抽出し、データの小数点に注意してください
re.findall('(\d+(\.\d+)?)',datas[0])
Every 4 各データはグループなので、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]}')

?️‍? のループを作成するだけです。 5. データ抽出部分 完全なコード

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

Python実践シリーズ | 定期的なデータ抽出と描画


以上がPython実践シリーズ | 定期的なデータ抽出と描画の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はPython当打之年で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。