日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python数据可视化从入门到实战_《Python编程从入门到实践》json数据可视化练习详解...

發布時間:2023/12/10 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python数据可视化从入门到实战_《Python编程从入门到实践》json数据可视化练习详解... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

《Python編程從入門到實踐》16.2中,計算收盤價均值的程序有些不易看懂,結合我自己的理解進行一些說明。

使用的數據集:join格式的數據,

數據集是由多個字典為元素組成的列表。每個字典包含如下信息

[{

"date": "2017-01-01",

"month": "01",

"week": "52",

"weekday": "Sunday",

"close": "6928.6492"

}......

{

"date": "2017-12-12",

"month": "12",

"week": "50",

"weekday": "Tuesday",

"close": "113732.6745"

}]

計算均值的程序為:

跳過函數,從idx_month = dates.index('2017-12-01')看起,index函數為返回列表的索引值,看下面例子:

因此,這部分代碼意為,首先讓集合了所有日期的列表dates用index方法取2017-12-01這一天的索引,并將其賦給idx_month,之后months[:idx_month], closes[:idx_month]表示分別對日期列表months,收盤價列表closes進行切片處理,取到了索引從0到idx_months的所有值,也就是2017-12-01這一天之前的所有日期,以及對應的收盤價,并將其和另外兩個實參傳遞到函數draw_line中。下面對函數中的每個語句進行說明。

def draw_line(x_data, y_data, title, y_legend):

#定義函數

xy_map = []

#定義一個空列表,用于存儲

for x, y in groupby(sorted(zip(x_data, y_data)), key=lambda _: _[0]):

#zip(x_data, y_data)表示將傳入的日期列表months和收盤價列表closes,分別按順序各取一個元素打包成元組列表組合成一個新的迭代器——zip類,即[(1,6928), (1,7070) …… (11,65583)]。

第二層的sorted函數對元組列表進行排序,得到了按照月份從小到大,同一月份的收盤價從小到大排序的元組列表[(1, 5383), (1,5566) …… (1,6928), (1,7070) …… (11,65583)]。這里sorted函數先把第一位從小到大排好,再排第二位,以此類推。

第三層的groupby函數,是一個分組聚合函數,key=lambda _: [0]是用匿名函數Lambda(Lambda表達式基于數學中的λ演算得名)表示的條件。

lambda函數:

lambda 參數列表: 對參數需要進行的操作

key=lambda _: _[0]就表示取列表中索引為[0]的值,并將返回值賦給key(下劃線表示臨時變量,僅用一次之后銷毀),key這個表達式表示groupby分組的依據,意味著按照元組列表的第一個元素進行分類。每循環一次,得到一組數據,x就是分類的key值。最后循環十一次,x=1~11,y則是對應的元組列表,得到:

x: 1 y: [(1,5383), (1,5566) …… (1,7835)]

2 [(2,6793), (2,6811) …… (2,8206)]

……

y_list = [v for _, v in y]

#下劃線表示沒有用到的值,這里即為y中元組的第一個值,將每個月的收盤價添加到y_list中

xy_map.append([x, sum(y_list) / len(y_list)])

#計算每個月的收盤價均值,并將元素以(月份,均值)的格式添加到空列表中。

x_unique, y_mean = [*zip(*xy_map)]

#*zip(iterable)函數是zip函數的逆過程,可將zip函數處理后的結果恢復為之前的樣子。*可理解為解壓。看例子:

所以它將xy_map中每個元組中的第一個元素全部取出,賦給x_unique,得到x_unique=(1,2,3,4,5,6,7,8,9,10,11),第二個元素全部取出,賦給y_mean,得到y_mean=(6285.870967741936, 7315.714285714285, 7789.032258064516, 8390.466666666667, 12963.935483870968, 18092.166666666668, 17146.16129032258, 26092.645161290322, 26865.633333333335, 35460.67741935484, 51436.166666666664)。

line_chart = pygal.Line()

#設置畫的圖為折線圖格式

line_chart.title = title

#設置標題

line_chart.x_labels = x_unique

#設置x軸的標簽

line_chart.add(y_legend, y_mean)

#加入y軸的數據及其它的含義

line_chart.render_to_file(title + '.svg')

#存儲圖片

return line_chart

#返回該圖片

參考資料:CSDN-專業IT技術社區-登錄 這篇博客也進行了詳細的講解。

總結

以上是生活随笔為你收集整理的python数据可视化从入门到实战_《Python编程从入门到实践》json数据可视化练习详解...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。