使用Python對公共自行車情況進(jìn)行數(shù)據(jù)分析(一)(好多地方不明白,好好研究唄堂淡,笨鳥先飛)

? ? ? ?市區(qū)運(yùn)營公共自行車已經(jīng)有三年了,突然接到任務(wù)要進(jìn)行一個(gè)大數(shù)據(jù)分析扒腕,反正也不是很懂绢淀,科學(xué)方法論,實(shí)踐出真知瘾腰,從馬克思主義方法論出發(fā)皆的,從整體性、實(shí)踐性蹋盆、開放性和真理性上闡釋公共自行車對于出行的影響费薄,揭示內(nèi)在的、本質(zhì)的邏輯聯(lián)系,就是要按照正確的的科學(xué)方法,客觀地認(rèn)識(shí)和對待大數(shù)據(jù)分析栖雾,,推動(dòng)公共自行車的發(fā)展建設(shè)楞抡,運(yùn)維!?

? ? ? ? 首先析藕,對簡友的文章進(jìn)行一個(gè)模擬操作過程召廷,分析內(nèi)容,根據(jù)自己的數(shù)據(jù)來實(shí)現(xiàn)方法的可行性账胧。簡友的文件鏈接地址:


美國西雅圖人們使用自行車情況分析與預(yù)測(初步)

本內(nèi)容接下來的說明分析都是根據(jù)自己的數(shù)據(jù)(就是市區(qū)自行車的租還數(shù)據(jù))竞慢,模擬簡友的方法進(jìn)行操作實(shí)現(xiàn)!

一:研究問題

市區(qū)公共自行車的使用情況的幾個(gè)問題:

1:周一到周末的使用量會(huì)有怎么樣具體的變化呢治泥!

2:天氣對人們使用自行車的使用有多大的影響呢筹煮!

3:自行車的使用能否得到用戶行為習(xí)慣!

二:研究工具


開發(fā)工具

總結(jié)windows下pythonmon開發(fā)工具:

1:寫個(gè)小腳本居夹,用notepad++或是sublime败潦,在cmd下命令實(shí)現(xiàn)。

2:做個(gè)小項(xiàng)目:操作數(shù)據(jù)庫讀寫的小案例吮播,自己學(xué)習(xí)用的变屁,推薦用spyder。

3:做生產(chǎn)項(xiàng)目賺錢的意狠,推薦專業(yè)的IDE粟关,如Pycharm,Eclipse with PyDev等。

三:數(shù)據(jù)分析

1:隨機(jī)抽取10個(gè)數(shù)據(jù)

%matplotlib inline

import matplotlib.pyplot as plt

import numpy as np

import pandas as pd

hourly = pd.read_csv(r"D:\working\windows\bikeAnalyze\SeattleBike\bike2015.csv",parse_dates=True,index_col="Date")#讀入數(shù)據(jù)闷板,同時(shí)默認(rèn)“Date作為index”

hourly.sample(n = 10)? #隨機(jī)抽取10行查看情況

隨機(jī)抽取數(shù)據(jù)圖表


選擇2015年的數(shù)據(jù)

2:對租車數(shù)跟還車數(shù)進(jìn)行統(tǒng)計(jì)

hourly.columns = ['lendbike', 'rentbike']? ? ? #把列名改的簡單一些澎灸,兩個(gè)列名代表自行車經(jīng)過時(shí)的方向。

hourly["total"] = hourly.lendbike + hourly.rentbike? ? #新加一列遮晚,計(jì)算每個(gè)時(shí)刻自行車的總數(shù)

daily = hourly.resample("d",how='sum')? #對數(shù)據(jù)框的日期按照天進(jìn)行重采樣性昭,屬于同一天的加在一起

weekly = daily.resample('w', how = 'sum') #對數(shù)據(jù)框的日期按照天進(jìn)行重采樣,屬于同周的加在一起

weekly.plot()

過程中有一些警告县遣,可以不處理


警告信息

數(shù)據(jù)結(jié)果圖表:


租還車統(tǒng)計(jì)數(shù)據(jù)

稍微說下:表示藍(lán)色線的租車數(shù)量在圖中好像不顯示糜颠,實(shí)際上市由于租車和還車的數(shù)據(jù)相差不大,對于用萬來統(tǒng)計(jì)數(shù)量萧求,就更小了其兴,導(dǎo)致租車藍(lán)色數(shù)據(jù)線沒有顯示。

3:白晝時(shí)間對租還車數(shù)量的影響

白晝時(shí)間計(jì)算方式:

def hours_of_daylight(date, axis=19.44, latitude=29.08):

"""Compute the hours of daylight for the given date

date:? exmple:2012-10-07

axis:? 地區(qū)的經(jīng)度

latitude: 地區(qū)的緯度

return :how many hours a day

"""

diff = date - pd.datetime(2000, 12, 21)

day = diff.total_seconds() / 24. / 3600

day %= 365.25

m = 1. - np.tan(np.radians(latitude)) * np.tan(np.radians(axis) * np.cos(day * np.pi / 182.625))

m = max(0, min(m, 2))

return 24. * np.degrees(np.arccos(1 - m)) / 180.

幾個(gè)未解決的問題:

(1)經(jīng)緯度的計(jì)算夸政,經(jīng)度相差100度元旬,緯度正常,后來在計(jì)算的時(shí)候發(fā)現(xiàn)用守问,經(jīng)緯度查詢出來的工具匀归,得到的結(jié)果是不對的,全部是一條直線耗帕。按照前面簡友的文章計(jì)算西雅圖的經(jīng)緯度也差100度穆端,這個(gè)怎么計(jì)算的,一下子沒懂兴垦?徙赢??探越?狡赐??钦幔?枕屉?

(2)時(shí)間計(jì)算方式:從(2000, 12, 21)這一天開始算,是什么緣故鲤氢,我更改下數(shù)值搀擂,比如(2000, 01, 01),結(jié)果得到的白晝時(shí)間也還有差異。

白晝時(shí)間變化數(shù)據(jù)圖形


4:自行車的數(shù)量變化和白天的長度之間的關(guān)系

plt.scatter(weekly.day_of_hours,weekly.total)

plt.xlabel('daylight hours')

plt.ylabel('weekly bicycle traffic');

兩者關(guān)系數(shù)據(jù)圖形


是否存在線性關(guān)系很難說卷玉,而且跟簡友的數(shù)據(jù)有一定的偏差哨颂,不管如何,還是驗(yàn)證一下相种。使用簡友說的scikit-learn威恼。

from sklearn.linear_model import LinearRegression

X = weekly[['day_of_hours']]? ? ? ? ? #白晝時(shí)間作為自變量

y = weekly['total']? ? ? ? ? ? ? ? ? #自行車數(shù)量作為應(yīng)變量

clf = LinearRegression(fit_intercept=True).fit(X, y)? ? #對上面兩個(gè)變量進(jìn)行線性擬合

print(clf.coef_)

#按照這個(gè)線性模型,白晝時(shí)間每增加一個(gè)小時(shí),那么一周內(nèi)觀察到的自行車數(shù)量增加2056輛

print(clf.score(X,y))

#計(jì)算線性模型對數(shù)據(jù)的擬合情況箫措,結(jié)果越接近1腹备,說明線性模型越精確

#為了更加直觀看出我們建立的線性模型的預(yù)測效果,我們對預(yù)測結(jié)果和真實(shí)結(jié)果進(jìn)行可視化對比

weekly["day_of_hours_trend"] = clf.predict(X)? #利用模型去預(yù)測"total"

weekly[["day_of_hours_trend","total"]].plot()? #利用模型預(yù)測值和真實(shí)值進(jìn)行對比

線性關(guān)系數(shù)據(jù)圖形


5:工作日與騎行量的數(shù)據(jù)關(guān)系

days = ['Mon','Tues','Wed','Thurs','Fri','Sat','Sun']defget_day_of_week(index):returndays[index.dayofweek]daily["day_of_week"] = daily.index.map(get_day_of_week)daily.head(10)day_count = daily.groupby("day_of_week").total.sum().plot(kind ='bar')

數(shù)據(jù)關(guān)系圖形


這個(gè)結(jié)果可以了解斤蔓,周一到周五人們使用自行車的情況最多植酥,周六和周末相對減少,看來大部分市民是用自行車來上班的弦牡。到目前為止友驮,影響選擇自行車出行的方式已經(jīng)有白晝的時(shí)長、星期幾這兩個(gè)因素了驾锰,下面我們根據(jù)簡友說的天氣變化的影響

6:天氣變化跟騎行量的數(shù)據(jù)關(guān)系

由于沒有天氣變化的數(shù)據(jù)文件喊儡,只能根據(jù)github上的數(shù)據(jù)來做下模擬分析

數(shù)據(jù)導(dǎo)入

weather = pd.read_csv(r"D:\working\windows\bikeAnalyze\SeattleBike\SeaTacWeather.csv",index_col="DATE",parse_dates = True,usecols=[2,3,6,7])? #讀入天氣文件

weather.sample(n = 10)? #隨機(jī)查看10行數(shù)據(jù)

顯示圖表


西雅圖天氣情況

#對溫度和降雨量進(jìn)行單位轉(zhuǎn)化,轉(zhuǎn)化到我們?nèi)粘I钪械膯挝?/p>

weather['TMIN'] =0.18* weather['TMIN'] +32

weather['TMAX'] =0.18* weather['TMAX'] +32

weather['PRCP'] /=254weather.TMIN.plot()#繪出每日最高溫隨著時(shí)間的變化weather.TMAX.plot()#繪出每日最低溫隨著時(shí)間的變化

數(shù)據(jù)關(guān)系圖形


氣溫隨著時(shí)間變化圖

? 重新計(jì)算采樣方式

#按照每周進(jìn)行時(shí)間規(guī)劃稻据,選出每周溫度最大的和溫度最小的,可視化weather.TMIN.resample('w',how='min').plot()

weather.TMAX.resample('w',how='max').plot()

plt.xlabel("日期")

plt.ylabel("每周的最大氣溫和最小氣溫")

重新采樣圖形關(guān)系圖


每天溫度差


綠色代表每天的最高氣溫

藍(lán)色代表每天的最低氣溫

我的編譯環(huán)境識(shí)別不了中文买喧,中文顯示亂碼

7:天氣捻悯、白晝時(shí)長、星期幾這三個(gè)變量淤毛,對自行車騎行的變化影響以及根據(jù)這三個(gè)變量去預(yù)測自行車的數(shù)目變化今缚。

算法分析

daily_1 =daily

fori inrange(7):? ??

? ? ? daily_1[days[i]]= (daily_1.index.dayofweek == i).astype(float)

daily_1.head(10)

結(jié)構(gòu)關(guān)系顯示圖表


離散變量轉(zhuǎn)化成連續(xù)變量


根據(jù)簡友的說明,可以發(fā)現(xiàn):“day_of_week”轉(zhuǎn)化成了7列低淡,而這7列的值都是數(shù)值姓言,因此我們利用“day_of_hours”['Mon', 'Tues', 'Wed', 'Thurs', 'Fri', 'Sat', 'Sun']總共八個(gè)變量去預(yù)測自行車總數(shù)的變化。

計(jì)算誤差


我們截圖上發(fā)現(xiàn)蔗蹋,我們利用兩個(gè)給出的信息何荚,分別是星期幾和白晝時(shí)長,我們就可以判斷猪杭,這個(gè)某一天的自行車總數(shù)餐塘,平均誤差在13102輛。

所以說我們的計(jì)算方式在存在相當(dāng)大的問題皂吮。

分析原因:1:白晝時(shí)間的計(jì)算方式

? ? ? ? ? ? ? ? ? ?2:剔除節(jié)假日的較大變化數(shù)據(jù)

? ? ? ? ? ? ? ? ? ?3:考慮其他變量影響

8:降水量戒傻、溫度、白晝時(shí)長蜂筹、和星期幾等多數(shù)據(jù)對自行車騎行量的分析

計(jì)算方式:

daily_new = daily_1.join(weather,how ='inner')##對daily 和 weather按照index需纳,進(jìn)行合并#使用合并后的數(shù)據(jù)進(jìn)行計(jì)算:包括周幾,每天白晝有幾個(gè)小時(shí)艺挪,溫度的最大和最小值不翩,降雨量作為自變量去預(yù)測每天的自行車總數(shù)

columns = days + ['day_of_hours','TMIN','TMAX','PRCP']

X = daily_new[columns]

y= daily_new['total']

clf = LinearRegression().fit(X,y)

daily_new['overall_trend'] = clf.predict(X)

發(fā)現(xiàn)執(zhí)行之后,發(fā)現(xiàn)一些錯(cuò)誤。


錯(cuò)誤問題

根據(jù)簡友說的慌盯,降雨量對自行車騎行總數(shù)的影響

ind = columns.index('PRCP')

slope = clf.coef_[ind]

print(slope)

9:

使用sklearn.linear_model.LinearRegression進(jìn)行線性回歸

應(yīng)用場景:1) 預(yù)測房子價(jià)格

? ? ? ? ? ? ? ? ? 2) 預(yù)測下周哪個(gè)電視節(jié)目會(huì)有更多的觀眾

? ? ? ? ? ? ? ? ? 3) 替換數(shù)據(jù)集中的缺失值

結(jié)論周霉,根據(jù)簡友的說明,重復(fù)這些代碼也是能夠完全重現(xiàn)以上的這些結(jié)果的亚皂!

本人也親測過可以使用俱箱,但是用我的數(shù)據(jù)文件就會(huì)出錯(cuò),明天在好好查查原因灭必。

雖然最后出現(xiàn)一點(diǎn)問題狞谱,但是關(guān)系不大,當(dāng)做學(xué)習(xí)禁漓,明天繼續(xù)把下一篇進(jìn)階文章看完跟衅。感謝簡友作者的文章,學(xué)習(xí)了播歼!

人生苦短伶跷,我用python

希望在簡友圈跟大家學(xué)習(xí)交流!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末秘狞,一起剝皮案震驚了整個(gè)濱河市叭莫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌烁试,老刑警劉巖雇初,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異减响,居然都是意外死亡靖诗,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進(jìn)店門支示,熙熙樓的掌柜王于貴愁眉苦臉地迎上來刊橘,“玉大人,你說我怎么就攤上這事悼院∩宋” “怎么了?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵据途,是天一觀的道長绞愚。 經(jīng)常有香客問我,道長颖医,這世上最難降的妖魔是什么位衩? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮熔萧,結(jié)果婚禮上糖驴,老公的妹妹穿的比我還像新娘僚祷。我一直安慰自己,他們只是感情好贮缕,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布辙谜。 她就那樣靜靜地躺著,像睡著了一般感昼。 火紅的嫁衣襯著肌膚如雪装哆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天定嗓,我揣著相機(jī)與錄音蜕琴,去河邊找鬼。 笑死宵溅,一個(gè)胖子當(dāng)著我的面吹牛凌简,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播恃逻,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼雏搂,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了寇损?” 一聲冷哼從身側(cè)響起畔派,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎润绵,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體胞谈,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡尘盼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了烦绳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片卿捎。...
    茶點(diǎn)故事閱讀 39,769評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖径密,靈堂內(nèi)的尸體忽然破棺而出午阵,到底是詐尸還是另有隱情,我是刑警寧澤享扔,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布底桂,位于F島的核電站,受9級特大地震影響惧眠,放射性物質(zhì)發(fā)生泄漏籽懦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一氛魁、第九天 我趴在偏房一處隱蔽的房頂上張望暮顺。 院中可真熱鬧厅篓,春花似錦、人聲如沸捶码。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽惫恼。三九已至档押,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間尤筐,已是汗流浹背汇荐。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留盆繁,地道東北人掀淘。 一個(gè)月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像油昂,于是被迫代替她去往敵國和親革娄。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Background: 首先聲明一點(diǎn)冕碟,這篇博客不是我的原創(chuàng)拦惋,我被作者對大家習(xí)以為常的數(shù)據(jù)而具有深入細(xì)微的思考方式所...
    YoghurtIce閱讀 3,014評論 3 8
  • 提問:人的靈魂,恰恰是最沉重的安寺,為什么厕妖?這節(jié)儉的車指的是什么?為什么它能承載人的靈魂挑庶? 熊敏歡解讀:即使船能把人帶...
    銀杏兒_9fbc閱讀 2,381評論 0 1
  • 拍照言秸,一直以來都是 iPhone 樂于布道的點(diǎn),同時(shí) iPhone 的成像質(zhì)量也足夠讓人滿意迎捺。每次看到廣告中顏色絢...
    aJ閱讀 604評論 0 5
  • 對青春的解讀举畸,[德國] 塞繆爾-厄爾曼這樣認(rèn)為: 青春不是年華,而是心境凳枝;青春不是桃面抄沮,丹唇,柔漆岖瑰,而是深沉的意志...
    德德豬閱讀 478評論 0 0