Python實戰系列 | 正規擷取資料並繪圖

發布: 2023-08-09 15:51:35
轉載
605 人瀏覽過


#本期給大家分享《Python實戰系列》的第一篇文章:正規提取資料並繪圖,該系列主要來自粉絲的實際問題,後期會不斷更新,希望對你有幫助,如有疑問或需要改進的地方可以私訊小編。
任務描述:取txt檔案各語言資料繪製折線圖, data.txt檔案截圖如下(太長了直截了當部分):

Python實戰系列 | 正規擷取資料並繪圖

#乍一看很像json格式的文件,實際上方不是Python實戰系列 | 正規擷取資料並繪圖
進入正題:

 ?️‍? 1.讀取資料

#
with open('data.txt') as f:
    data = f.read()
登入後複製
 ?️‍? 2. 正規提取花括號{}裡面的資訊
##
datas = re.findall('({.*?})',data)
登入後複製
Python實戰系列 | 正規擷取資料並繪圖

Python實戰系列 | 正規擷取資料並繪圖


Python實戰系列 | 正規擷取資料並繪圖
##內容基本上就是程式語言各日期的佔比情況,接下來就是提取日期資訊和資料資訊了。
 ?️‍? 3. 提取name,注意轉義(')


#################################### ######
re.findall('\'(.*)\'',datas[0])[0]
登入後複製
######### ?️‍? 4. 提取日期和數據,注意數據小數點#########
re.findall('(\d+(\.\d+)?)',datas[0])
登入後複製
##########每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中文網其他相關文章!

相關標籤:
來源:Python当打之年
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!