欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

怎么用Numpy分析某單車騎行時間-創(chuàng)新互聯(lián)

這篇文章主要講解了“怎么用Numpy分析某單車騎行時間”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么用Numpy分析某單車騎行時間”吧!

創(chuàng)新互聯(lián)公司專注于企業(yè)全網(wǎng)營銷推廣、網(wǎng)站重做改版、阜陽網(wǎng)站定制設計、自適應品牌網(wǎng)站建設、成都h5網(wǎng)站建設商城網(wǎng)站定制開發(fā)、集團公司官網(wǎng)建設、成都外貿網(wǎng)站建設、高端網(wǎng)站制作、響應式網(wǎng)頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為阜陽等各大城市提供網(wǎng)站開發(fā)制作服務。
分析目的

看標題就知道了,分析各季度共享單車的騎行時間。

數(shù)據(jù)收集

因為這次的數(shù)據(jù)源自網(wǎng)絡,所以先簡單看下數(shù)據(jù)的結構:

怎么用Numpy分析某單車騎行時間

可以看到數(shù)據(jù)有9個字段:

"Duration (ms)","Start date","End date","Start station number","Start station","End station number","End station","Bike number","Member type"

按照我們的目標,我們只需要第一個字段Duration(ms)

所以第一步先讀取已經下載好的數(shù)據(jù)之后在第二步數(shù)據(jù)清洗中取出需要的字段:

# 數(shù)據(jù)收集
def data_collection():
    data_arr_list = []
    for data_filename in data_filenames:
        file = os.path.join(data_path, data_filename)
        data_arr = np.loadtxt(file,dtype=bytes,delimiter=',', skiprows=1).astype(str)
        data_arr_list.append(data_arr)
    return data_arr_list
數(shù)據(jù)清洗

因為數(shù)據(jù)是整理后導出的數(shù)據(jù)所以不需要清洗缺失值等操作,我們直接取出需要的字段,做一些處理即可。

這里騎行時間單位為ms,所以需要轉化為min需要/1000/60。

# 數(shù)據(jù)清洗
def data_clean(data_arr_list):
    duration_min_list = []
    for data_arr in data_arr_list:
        data_arr = data_arr[:,0]
        duration_ms = np.core.defchararray.replace(data_arr,'"','')
        duration_min = duration_ms.astype('float') / 1000 / 60
        duration_min_list.append(duration_min)
    return duration_min_list
數(shù)據(jù)分析

計算平均值在numpy中提供了計算函數(shù),直接調用即可。

# 數(shù)據(jù)分析
def mean_data(duration_min_list):
    duration_mean_list = []
    for duration_min in duration_min_list:
        duration_mean = np.mean(duration_min)
        duration_mean_list.append(duration_mean)
    return duration_mean_list
結果展示

這里可視化展示使用的是matplotlib.pyplot庫,咸魚目前還沒有寫相關的入門文章,可以上網(wǎng)看下文檔學習下簡單使用即可,之后會有系列文章寫可視化的內容。

# 數(shù)據(jù)展示
def show_data(duration_mean_list):
    plt.figure()
    name_list = ['第一季度', '第二季度', '第三季度', '第四季度']
    plt.bar(range(len(duration_mean_list)),duration_mean_list,tick_label = name_list)
    plt.show()
成果展示
怎么用Numpy分析某單車騎行時間

單單從上面的圖可以看到以炎熱的夏季和涼爽的秋季為主調的二三季度的騎行時間要高于春冬為主調的一四季度,以此判斷氣溫變化對人們使用的共享單車的影響。

一些踩過的坑
關于數(shù)據(jù)讀取(一)

在python中字符串是有字節(jié)字符串和文本字符串之分的,我們通常說的字符串是指文本字符串。而使用numpy的loadtxt函數(shù)讀取的字符串默認是字節(jié)字符串,輸出的話字符串前面會有個b,形如b’……’。通常是需要轉換的,如果不轉換將會出現(xiàn)問題。

數(shù)據(jù)收集部分如果不注意這一點,在數(shù)據(jù)清洗部分,字段的格式就會因為Duration的值多了一個b轉化上就會報錯。

處理方式:

numpy.loadtxt讀入的字符串總是bytes格式,總是在前面加了一個b
原因:np.loadtxt and np.genfromtxt operate in byte mode, which is the default string type in Python 2. But Python 3 uses unicode, and marks bytestrings with this b. numpy.loadtxt中也聲明了:Note that generators should return byte strings for Python 3k.解決:使用numpy.loadtxt從文件讀取字符串,最好使用這種方式np.loadtxt(filename, dtype=bytes).astype(str)

關于數(shù)據(jù)讀取上的坑(二)

可以看到咸魚在讀取數(shù)據(jù)的時候使用的是numpy.loadtxt,這樣的操作固然方便,但是代價就是內存直接爆掉,還好這次的數(shù)據(jù)才500M,所以不推薦大家使用我這個方法,之后會加以改進(如果我會的話)

這里分享一段代碼,來自慕課網(wǎng)bobby老師的實戰(zhàn)課,如何使用生成器讀取大文本文件:

#500G, 特殊 一行
def myreadlines(f, newline):
  buf = ""
  while True:
    while newline in buf:
      pos = buf.index(newline)
      yield buf[:pos]
      buf = buf[pos + len(newline):]
    chunk = f.read(4096)

    if not chunk:
      #說明已經讀到了文件結尾
      yield buf
      break
    buf += chunk

with open("input.txt") as f:
    for line in myreadlines(f, "{|}"):
        print (line)
關于matplotlib.pyplot使用上的坑

在可視化的時候,柱狀圖的標識是中文,在顯示的時候直接顯示的是方塊,無法顯示中文。如下:

怎么用Numpy分析某單車騎行時間

處理方法:

解決方式一:修改配置文件
(1)找到matplotlibrc文件(搜索一下就可以找到了)
(2)修改:font.serif和font.sans-serif,我的在205,206行
font.serif: SimHei, Bitstream Vera Serif, New Century Schoolbook, Century Schoolbook L, Utopia, ITC Bookman, Bookman, Nimbus Roman No9 L, Times New Roman, Times, Palatino, Charter, serif Bookman, Nimbus Roman No9 L, Times New Roman, Times, Palatino, Charter, serif
font.sans-serif: SimHei, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif

解決方式二:在代碼中修改
import matplotlib

指定默認字體
matplotlib.rcParams[‘font.sans-serif’] = [‘SimHei’]
matplotlib.rcParams[‘font.family’]=’sans-serif’

解決負號’-‘顯示為方塊的問題
matplotlib.rcParams[‘axes.unicode_minus’] = False

感謝各位的閱讀,以上就是“怎么用Numpy分析某單車騎行時間”的內容了,經過本文的學習后,相信大家對怎么用Numpy分析某單車騎行時間這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關知識點的文章,歡迎關注!

網(wǎng)站題目:怎么用Numpy分析某單車騎行時間-創(chuàng)新互聯(lián)
瀏覽路徑:http://www.chinadenli.net/article40/cceoeo.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供GoogleChatGPT移動網(wǎng)站建設動態(tài)網(wǎng)站服務器托管網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

外貿網(wǎng)站建設