科學計算:Python 分析數據找問題,並圖形化

對於記錄的數據,如何用 Python 進行分析、或圖形化呢?

本文將介紹 numpy, matplotlib, pandas, scipy 幾個包,進行數據分析、與圖形化。

準備環境

Python 環境建議用 Anaconda 發行版,下載地址:

  • 官方: https://www.anaconda.com/products/individual#Downloads
  • 清華源: https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/

Anaconda 是一個用於科學計算的 Python 發行版,已經包含了眾多流行的科學計算、數據分析的 Python 包。

可以 conda list 列出已有的包,會發現本文要介紹的幾個包都有了:

$ conda list | grep numpy
numpy                     1.17.2           py37h99e6662_0

$ conda list | grep "matplot\|seaborn\|plotly"
matplotlib                3.1.1            py37h54f8f79_0
seaborn                   0.9.0                    py37_0

$ conda list | grep "pandas\|scipy"
pandas                    0.25.1           py37h0a44026_0
scipy                     1.3.1            py37h1410ff5_0

如果已有 Python 環境,那麼 pip 安裝一下它們:

pip install numpy matplotlib pandas scipy
# pypi 鏡像: https://mirrors.tuna.tsinghua.edu.cn/help/pypi/

本文環境為: Python 3.7.4 (Anaconda3-2019.10)

準備數據

本文假設了如下格式的數據 data0.txt :

id, data, timestamp
0, 55, 1592207702.688805
1, 41, 1592207702.783134
2, 57, 1592207702.883619
3, 59, 1592207702.980597
4, 58, 1592207703.08313
5, 41, 1592207703.183011
6, 52, 1592207703.281802
...

CSV 格式:逗號分隔,讀寫簡單, Excel 可打開。

之後,我們會一起達成如下幾個目標:

  • CSV 數據, numpy 讀取與計算
  • data 列數據, matplotlib 圖形化
  • data 列數據, scipy 插值,形成曲線
  • timestamp 列數據, pandas 分析前後差值、每秒個數

numpy 讀取數據

numpy 可用 loadtxt 直接讀取 CSV 數據,

import numpy as np

# id, (data), timestamp
datas = np.loadtxt(p, dtype=np.int32, delimiter=",", skiprows=1, usecols=(1))
  • dtype=np.int32: 數據類型 np.int32
  • delimiter=",": 分隔符 “,”
  • skiprows=1: 跳過第 1 行
  • usecols=(1): 讀取第 1 列

如果讀取多列,

# id, (data, timestamp)
dtype = {'names': ('data', 'timestamp'), 'formats': ('i4', 'f8')}
datas = np.loadtxt(path, dtype=dtype, delimiter=",", skiprows=1, usecols=(1, 2))

dtype 說明可見: https://numpy.org/devdocs/reference/arrays.dtypes.html

numpy 分析數據

numpy 計算均值、樣本標準差:

# average
data_avg = np.mean(datas)
# data_avg = np.average(datas)

# standard deviation
# data_std = np.std(datas)
# sample standard deviation
data_std = np.std(datas, ddof=1)

print("  avg: {:.2f}, std: {:.2f}, sum: {}".format(
      data_avg, data_std, np.sum(datas)))

matplotlib 圖形化

只需四行,就能圖形化显示了:

import sys

import matplotlib.pyplot as plt
import numpy as np

def _plot(path):
  print("Load: {}".format(path))
  # id, (data), timestamp
  datas = np.loadtxt(path, dtype=np.int32, delimiter=",", skiprows=1, usecols=(1))

  fig, ax = plt.subplots()
  ax.plot(range(len(datas)), datas, label=str(i))
  ax.legend()
  plt.show()

if __name__ == "__main__":
  if len(sys.argv) < 2:
    sys.exit("python data_plot.py *.txt")
  _plot(sys.argv[1])

ax.plot(x, y, ...) 橫坐標 x 取的數據下標 range(len(datas))

完整代碼見文末 Gist 地址的 data_plot.py 。運行效果如下:

$ python data_plot.py data0.txt
Args
  nonzero: False
Load: data0.txt
  size: 20
  avg: 52.15, std: 8.57, sum: 1043

可以讀取多個文件,一起显示:

$ python data_plot.py data*.txt
Args
  nonzero: False
Load: data0.txt
  size: 20
  avg: 52.15, std: 8.57, sum: 1043
Load: data1.txt
  size: 20
  avg: 53.35, std: 6.78, sum: 1067

scipy 對數據插值

x, y 兩組數據,用 scipy 進行插值,平滑成曲線:

from scipy import interpolate

xnew = np.arange(xvalues[0], xvalues[-1], 0.01)
ynew = interpolate.interp1d(xvalues, yvalues, kind='cubic')

完整代碼見文末 Gist 地址的 data_interp.py 。運行效果如下:

python data_interp.py data0.txt

matplotlib 圖像化時如何配置、延遲、保存,可見代碼與註釋。

pandas 分析數據

這兒需要讀取 timestamp 列數據,

# id, data, (timestamp)
stamps = np.loadtxt(path, dtype=np.float64, delimiter=",", skiprows=1, usecols=(2))

numpy 計算前後差值,

stamps_diff = np.diff(stamps)

pandas 統計每秒個數,

stamps_int = np.array(stamps, dtype='int')
stamps_int = stamps_int - stamps_int[0]
import pandas as pd
stamps_s = pd.Series(data=stamps_int)
stamps_s = stamps_s.value_counts(sort=False)

辦法:把時間戳直接變整秒數,再 pandas 統計相同值。

完整代碼見文末 Gist 地址的 stamp_diff.py 。運行效果如下:

python stamp_diff.py data0.txt

matplotlib 圖形化時怎麼显示多個圖表,也可見代碼。

結語

本文代碼 Gist 地址: https://gist.github.com/ikuokuo/8629cc28079199c65e0eedb0d02a9e74

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※教你寫出一流的銷售文案?

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※回頭車貨運收費標準

※別再煩惱如何寫文案,掌握八大原則!

※超省錢租車方案

※產品缺大量曝光嗎?你需要的是一流包裝設計!

我要穿越,干翻 “爛語言” JavaScript!

更多精彩文章,盡在碼農翻身

 

我是一個線程 

TCP/IP之大明郵差 

一個故事講完Https 

CPU 阿甘 

Javascript: 一個屌絲的逆襲 

微服務把我坑了

 如何降低程序員的工資? 

程序員,你得選准跑路的時間! 

兩年,我學會了所有的編程語言! 

一直CRUD,一直996,我煩透了,我要轉型 

字節碼萬歲! 

上帝託夢給我說:一切皆文件 

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※超省錢租車方案

※別再煩惱如何寫文案,掌握八大原則!

※回頭車貨運收費標準

※教你寫出一流的銷售文案?

FB行銷專家,教你從零開始的技巧

日本福島核事故:日本證實一名工人死於輻射

摘錄自2018年9月6日BBC中文網報導

日本首次公開證實,2011年福島核電站洩漏事故當中的一名工人,在事後因為核輻射而死亡。

該名50多歲的男子在2016年被診斷患有肺癌,他最終也是死於這種疾病。

日本政府此前曾經承認,福島核輻射導致四名工人患病,但這是日本第一次承認有人因此而死亡。

在聽取放射科專家及其他專業人士的意見之後,厚生勞動省認為該名工人的家屬應當獲得賠償。

雖然福島核災當時並沒有人直接死於核事故,但負責福島核設施運作的東京電力株式會社仍然面對多起賠償申訴。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※Google地圖已可更新顯示潭子電動車充電站設置地點!!

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※別再煩惱如何寫文案,掌握八大原則!

網頁設計最專業,超強功能平台可客製化

石膏內藏犀牛角 越南機場破獲125公斤走私

摘錄自2019年7月28日中央社報導

越南當局今天25日在首都河內一座機場破獲犀牛角走私案,查獲55支、重達125斤藏在石膏內的犀牛角。

目前不清楚這些犀牛角來自哪個非洲國家。警方同日逮捕一名涉及野生動物走私的主要嫌疑人與另兩名男子。警方發現他們停在停車場的車內放了7具冷凍老虎屍體,之後循線逮捕。

越南黑市販售象牙、穿山甲、老虎器官和犀牛角等野生動物,其中尤以犀牛角特別昂貴,一公斤價格可高達6萬美元。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※想知道最厲害的網頁設計公司"嚨底家"!

※別再煩惱如何寫文案,掌握八大原則!

※產品缺大量曝光嗎?你需要的是一流包裝設計!

南韓推動十年逐步禁塑計畫

摘錄自2018年9月5日公視新聞報導

南韓為了加強環保,制定減少塑膠生產量的「十年計畫」,提出未來十年,將逐步禁止一次性塑膠杯及塑膠吸管;此外,廚餘處理因秤重計費成效不錯,將逐漸取消以袋計費方式,估計可減少三成五的食物浪費。

南韓人每年大約用掉257億個一次性塑膠杯,以及100億根一次性塑膠吸管,為了不再製造更多塑膠產品以及減少資源浪費,南韓政府制定十年計劃,2027年之前,一次性使用的塑膠杯、塑膠吸管,將逐步禁用,此外,產品過度包裝也會被禁止;預計將南韓本土製造出的廢棄物,從目前的處理費每10億韓圜、相當於台幣274萬為單位的95.5噸,減少到76.4噸。

南韓環境部資源再生局副局長椿萬(音譯)表示,「我們首要任務就是在整個生產、消耗、管理,以及回收過程中減少浪費,並且將廢物重新配流到生產過程中。」

此外,為了減少食物的浪費,將強制規定所有超過一定規模的公寓大樓安裝有無線射頻辨識系統RFID的廚餘回收桶,計畫於2022年前達成,各餐廳於10年內強制安裝;持有RFID卡的民眾,必須先刷卡,蓋子才會打開,將廚餘倒進去後依重量繳費,也就是說,廚餘越重就越貴,一改過去無RFID回收桶而必須用回收袋固定計費的方法。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※別再煩惱如何寫文案,掌握八大原則!

※教你寫出一流的銷售文案?

※超省錢租車方案

FB行銷專家,教你從零開始的技巧

俄出現「鯨魚監獄」 傳跟中國建水族館有關

摘錄自2018年11月16日大紀元報導

近日,一家位於俄羅斯遠東納霍德卡港附近的圈養著100多頭鯨魚的水上農場被媒體曝光,據知情者提供的無人機航拍視頻顯示,在海邊圈起的一片水域中,安放有十個水槽,在開放的七個水槽中,可以看到其中有很多鯨魚,大多數為珍稀的白鯨,超過90頭。俄羅斯動物保護人士指責這些圈養鯨魚的環境狹小惡劣,可以被稱為是「鯨魚監獄」。

俄羅斯動物保護組織「撒哈林生態監督」負責人德米德里•利西岑對此評論說:「近年來中國興建了大批的水族館,僅在最近兩年就有32家新的水族館開業。每個水族館都需要數頭鯨魚,所以中國方面有巨大的需求,而這些鯨魚都是為向中國出口而捕撈的。」

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※別再煩惱如何寫文案,掌握八大原則!

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※超省錢租車方案

※教你寫出一流的銷售文案?

網頁設計最專業,超強功能平台可客製化

珍奶風席捲馬來西亞 掀起清真認證與環保話題

摘錄自2019年7月28日中央社報導

台灣珍奶近年來席捲東南亞市場,馬來西亞各大街小巷可隨處看見珍珠奶茶飲料店,某些街道還被稱作「奶茶街」,這股珍珠奶茶風潮也在當地帶動了清真、健康及環保等話題。

馬來西亞穆斯林人口超過1900萬人,對於源自台灣的珍珠奶茶,一名穆斯林網民近期就在網路上開始探討眾多席捲馬國的珍珠奶茶品牌,是否取得清真認證,引起網民熱烈討論。

伊斯蘭教是馬國官方宗教,馬來西亞同時奉行伊斯蘭法及聯邦憲法,穆斯林日常生活食用或碰觸身體的產品,必須符合伊斯蘭教義,即為「清真(Halal)」,避免碰觸包括豬和酒精等的不潔之物。獲得清真認證的產品從原物料開始到產品處理都必須嚴格把關。

除了清真認證受到關注之外,珍珠奶茶飲料杯主要都以塑膠材質為主,人們在飲用後隨處拋棄杯子的現象已經對環境帶來破壞,也受到許多環保人士的批評。

其中,最受熱議的奶茶街位於雪蘭莪州(Selangor)首邦市(Subang)SS15區,此地區約有近15家珍珠奶茶店,缺乏公德心的消費者在飲用奶茶後隨手將奶茶杯丟棄在店門前、溝渠、階梯上,幾乎隨處可見珍奶杯及吸管、塑膠袋,嚴重影響市容。

清道夫在收拾「殘局」後,堆積如山的樹膠杯及吸管塑膠袋更是讓人看了目瞪口呆,台灣珍珠奶茶風行馬來西亞,與馬國政府近期所推動的「減糖」、「減塑」、「禁吸管」政策背道而馳。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※教你寫出一流的銷售文案?

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※回頭車貨運收費標準

※別再煩惱如何寫文案,掌握八大原則!

※超省錢租車方案

※產品缺大量曝光嗎?你需要的是一流包裝設計!

燒庫存惹議 Burberry停止銷毀並捨棄真皮草

摘錄自2018年9月6日中央社報導

英國時尚品牌Burberry表示,未來將不再燒毀價值數百萬英鎊計的庫存商品,也不再於產品中使用真皮草。

路透社報導,Burberry在上個財政年度報告中,承認燒毀價值高達2860萬英鎊(約新台幣11.7億元)商品後,表示會致力於讓公司在社會和環境議題更負責任。

Burberry還表示,將追隨Versace、Gucci和道德時尚品牌先驅Stella McCartney的腳步,從系列產品中去除真皮,如兔子,狐狸,貂、亞洲浣熊等的皮毛。Burberry新設計師里卡多提西(Riccardo Tisci)首發系列將不含任何皮草。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※超省錢租車方案

※別再煩惱如何寫文案,掌握八大原則!

※回頭車貨運收費標準

※教你寫出一流的銷售文案?

FB行銷專家,教你從零開始的技巧

鼓勵廢塑膠回收!印尼泗水「空瓶當車票」

摘錄自2018年11月12日民視報導

印尼第二大城泗水為了鼓勵民眾回收塑膠廢棄物,推動了「用塑膠空瓶當車票」的活動,只要用塑膠空瓶就能換公車車票,免費在市區搭一趟車。這不僅鼓勵民眾回收塑膠廢棄物,也增加大眾運輸的使用率,印尼政府希望藉這項活動,在2020年前讓印尼免受塑膠塑廢棄物之苦。

泗水衛生局官員迪居尼亞托羅表示:「為避免塑膠瓶造成環境污染問題,我們呼籲居民回收塑膠空瓶,用這些空瓶來換公車車票。」

這項活動每天回收平均200公斤塑膠空瓶,周末回收數更高,從活動開始到現在,回收量已累積高達39公噸。

印尼是僅次於中國全球最大塑膠垃圾製造國之一,其中泗水的日常垃圾中,就有15%是塑膠廢棄物。當地政府也表示,這項活動讓塑膠廢棄物具有實用價值,讓民眾更關注這項問題。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※想知道最厲害的網頁設計公司"嚨底家"!

※別再煩惱如何寫文案,掌握八大原則!

※產品缺大量曝光嗎?你需要的是一流包裝設計!

歐洲熱浪向北挺進 格陵蘭冰層恐加速融化

摘錄自2019年7月26日中央社報導

聯合國於26日指出,席捲歐洲的熱浪有往北移動跡象,位於格陵蘭的全球第二大冰層可能會加速融化,厚度將接近或甚至低於2012年最薄紀錄。聯合國世界氣象組織(WMO)發言人努利斯(Clare Nullis)表示,由非洲北部往北移動的熱氣流,25日在歐洲各地造成破紀錄高溫,且氣溫新高點與原高點的差距可多達攝氏2至4度,「完全令人難以置信」。

努利斯表示,根據預測,熱氣流「正把高溫傳送到格陵蘭」,而這將「導致高溫,因此加速格陵蘭冰層融化」。「我們還不知道2012年的紀錄會不會被打破,但距離不遠了。」「光是7月,它(格陵蘭冰層)就因表面融化,失去1600億噸的冰,大約相當6400萬個奧運規格游泳池的冰量。僅僅7月,且僅僅是冰層表面融化,還不包括海洋冰融。」

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※別再煩惱如何寫文案,掌握八大原則!

※教你寫出一流的銷售文案?

※超省錢租車方案

FB行銷專家,教你從零開始的技巧