91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2021-12-27 10:47:37 來源:億速云 閱讀:157 作者:iii 欄目:開發技術

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

分析目的

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

數據收集

因為這次的數據源自網絡,所以先簡單看下數據的結構:

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

可以看到數據有9個字段:

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

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

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

# 數據收集
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
數據清洗

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

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

# 數據清洗
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
數據分析

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

# 數據分析
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庫,咸魚目前還沒有寫相關的入門文章,可以上網看下文檔學習下簡單使用即可,之后會有系列文章寫可視化的內容。

# 數據展示
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分析某單車騎行時間

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

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

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

數據收集部分如果不注意這一點,在數據清洗部分,字段的格式就會因為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)

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

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

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

#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分析某單車騎行時間這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

天柱县| 汉沽区| 城固县| 扶绥县| 南乐县| 龙海市| 黔江区| 伊金霍洛旗| 沈丘县| 久治县| 东乡族自治县| 阳谷县| 聊城市| 阳泉市| 昭通市| 二连浩特市| 江川县| 北川| 九台市| 长沙市| 泸州市| 海淀区| 建宁县| 筠连县| 天柱县| 随州市| 孝感市| 仁化县| 沈阳市| 大同县| 晋州市| 贡嘎县| 琼结县| 南昌县| 庄浪县| 海南省| 宁海县| 化隆| 武冈市| 开远市| 会昌县|