中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

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

這篇文章主要講解了“怎么用Numpy分析某單車(chē)騎行時(shí)間”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“怎么用Numpy分析某單車(chē)騎行時(shí)間”吧!

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

看標(biāo)題就知道了,分析各季度共享單車(chē)的騎行時(shí)間。

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

因?yàn)檫@次的數(shù)據(jù)源自網(wǎng)絡(luò),所以先簡(jiǎn)單看下數(shù)據(jù)的結(jié)構(gòu):

怎么用Numpy分析某單車(chē)騎行時(shí)間

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

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

按照我們的目標(biāo),我們只需要第一個(gè)字段Duration(ms)。

所以第一步先讀取已經(jīng)下載好的數(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ù)清洗

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

這里騎行時(shí)間單位為ms,所以需要轉(zhuǎn)化為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ù)分析

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

# 數(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
結(jié)果展示

這里可視化展示使用的是matplotlib.pyplot庫(kù),咸魚(yú)目前還沒(méi)有寫(xiě)相關(guān)的入門(mén)文章,可以上網(wǎng)看下文檔學(xué)習(xí)下簡(jiǎn)單使用即可,之后會(huì)有系列文章寫(xiě)可視化的內(nèi)容。

# 數(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分析某單車(chē)騎行時(shí)間

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

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

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

數(shù)據(jù)收集部分如果不注意這一點(diǎn),在數(shù)據(jù)清洗部分,字段的格式就會(huì)因?yàn)?code>Duration的值多了一個(gè)b轉(zhuǎn)化上就會(huì)報(bào)錯(cuò)。

處理方式:

numpy.loadtxt讀入的字符串總是bytes格式,總是在前面加了一個(gè)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)

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

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

這里分享一段代碼,來(lái)自慕課網(wǎng)bobby老師的實(shí)戰(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:
      #說(shuō)明已經(jīng)讀到了文件結(jié)尾
      yield buf
      break
    buf += chunk

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

在可視化的時(shí)候,柱狀圖的標(biāo)識(shí)是中文,在顯示的時(shí)候直接顯示的是方塊,無(wú)法顯示中文。如下:

怎么用Numpy分析某單車(chē)騎行時(shí)間

處理方法:

解決方式一:修改配置文件
(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

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

解決負(fù)號(hào)’-‘顯示為方塊的問(wèn)題
matplotlib.rcParams[‘a(chǎn)xes.unicode_minus’] = False

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

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

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

廣告

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

外貿(mào)網(wǎng)站建設(shè)
金昌市| 威宁| 仙桃市| 集贤县| 吕梁市| 卫辉市| 南和县| 会东县| 大化| 平利县| 秭归县| 龙里县| 疏附县| 临桂县| 乌拉特前旗| 雅江县| 延安市| 宜丰县| 达尔| 安龙县| 诏安县| 南和县| 莎车县| 凌海市| 浦北县| 文化| 广昌县| 太仓市| 樟树市| 观塘区| 田阳县| 仪征市| 赤城县| 林州市| 和静县| 灵宝市| 汝州市| 和龙市| 滨州市| 慈利县| 本溪市|