(一)、選題的背景
為什么要選擇此選題?要達到的數據分析目標是什么?從社會、經濟、技術、數據來源等方面進行描述(200 字以內)(10 分)
地鐵行業蓬勃發展的世紀,它不占用城市寶貴土地和空間,既不對地面構成任何環境污染,又可以為乘客躲避城市嘈雜煩躁的空間提供良好環境。乘坐過地鐵的人,普遍都有這樣的感覺,快捷、准時、方便、舒適。地鐵要客流統計實時監控人數的變化,一旦發生大客流,就可以實行客流量限制措施。在針對客流量統計數據,科學的有效增添工作人員的調配,對乘客存在的安全隱患做安全防護措施,同時在客流多時采取限流的方式方便乘客出行。所以,對地鐵客流量統計,給地鐵的統預測工作提供借鑒,為日常的地鐵運行和調度工作以參考。同時對地鐵大客流的現狀進行分析和研究,提高地鐵的運營水平,管理和組織策略。而且良好的客流組織工作能夠提升市民出行的舒適度和滿意度。
(二)、大數據分析設計方案(10 分)
1.本數據集的數據內容與數據特征分析
2.數據分析的課程設計方案概述(包括實現思路與技術難點)
以“地鐵乘客流量預測”為題,可通過分析地鐵站的歷史刷卡數據,預測站點未來的客流量變化,幫助實現更合理的出行路線選擇,規避交通堵塞,提前部署站點安保措施等,最終實現用大數據和人工智能等技術助力未來城市安全出行。地鐵車站的客流量主要取決周邊人口的密集程度以及客流的流動速度,同時又受到其他公共交通的制約和影響。另外,地鐵車站的接駁換乘布置,車站的集散通過能力也是影響客流量的重要因素。周邊經濟水平。周邊土地利用性質是影響車站客流量和全天客流分布特征的關鍵因素,通常情況下,周邊經濟越繁華,越能產生客流,因此客流量越大,通常為商業區、旅游去、休閑娛樂場所,火車站點,
一定時間內的乘客人數。大客流主要影響因素是客流的多少,在一段時間內進入地鐵乘客越多,大客流的現象越發嚴重。站台乘客多,將導致乘客誤入或者被擠下軌行區概率也高。周邊接駁換乘設施。為了避免市區內的交通擁堵,很多地鐵線路的站點都設置了與小汽車、自行車接駁換乘設施以吸引遠郊區的客流。站內設備設施。面對巨大的客流,售票工作僅靠自動售票機是不能滿足大客流售票要求的,車站自動售票機效率、數量也有限。因此在大客流之前應該提前制作好滿足客流要求的預制單程票,當然這個是在有預見性的大客流時提前采取的准備工作。
以某一地鐵站的客流量對該地鐵站進行數據分析,多方面展開了解,從數據清洗,到pandas數據分析、pandas繪圖、matplotlib、seaborn等多種方法進行數據處理,找到對應數據集並編寫源代碼,各方位對地鐵客流量進行分析,讓大家顯明易懂該文章所表述內容
(三)、數據分析步驟(70 分)
1.數據源
請說明數據源采用的哪一個開放的數據集?如果是采集的,請說明采集來源與方式。
數據集來源:https://tianchi.aliyun.com/dataset?spm=5176.14154004.J_3941670930.15.31fe5699RLkDXV
https://tianchi.aliyun.com/dataset/dataDetail?dataId=21904
2.數據清洗
列出數據清洗的主要步驟
1 import pandas as pd 2 import numpy as up 3 file_path = open('D:\地鐵1.csv') 4 file_path = open('D:\地鐵2.csv') 5 file_path = open('D:\地鐵3.csv') 6 file_path = open('D:\地鐵4.csv') 7 file_path = open('D:\地鐵5.csv') 8 file_path = open('D:\地鐵6.csv') 9 file_path = open('D:\地鐵7.csv') 10 file_path = open('D:\地鐵8.csv') 11 file_path = open('D:\地鐵9.csv') 12 file_path = open('D:\地鐵10.csv') 13 file_data = pd.read_csv(file_path) 14 #查看空值,缺失值
15 file_data.isnull()
1 import pandas as pd 2 import numpy as up 3 file_path = open('D:\地鐵1.csv') 4 file_path = open('D:\地鐵2.csv') 5 file_path = open('D:\地鐵3.csv') 6 file_path = open('D:\地鐵4.csv') 7 file_path = open('D:\地鐵5.csv') 8 file_path = open('D:\地鐵6.csv') 9 file_path = open('D:\地鐵7.csv') 10 file_path = open('D:\地鐵8.csv') 11 file_path = open('D:\地鐵9.csv') 12 file_path = open('D:\地鐵10.csv') 13 file_data = pd.read_csv(file_path) 14 #查看缺失值,缺失值
15 file_data.notnull()
1 import pandas as np 2 import numpy as np 3 file_path = open('D:\地鐵1.csv') 4 file_path = open('D:\地鐵2.csv') 5 file_path = open('D:\地鐵3.csv') 6 file_path = open('D:\地鐵4.csv') 7 file_path = open('D:\地鐵5.csv') 8 file_path = open('D:\地鐵6.csv') 9 file_path = open('D:\地鐵7.csv') 10 file_path = open('D:\地鐵8.csv') 11 file_path = open('D:\地鐵9.csv') 12 file_path = open('D:\地鐵10.csv') 13 file_data = pd.read_csv(file_path) 14 #標記重復值
15 file_data.duplicated()
全為false,說明沒有一個空值或缺失值,全為true,說明沒有一個空值或缺失值,說明天池挑戰賽提供的數據很干凈如果出現缺失值的話,可以使用dropna()和fillna()方法對缺失值進行填充;
所有的標記都顯示為false。說明沒有重復值,不需要再處理,提供的數據沒有問題,記錄系統沒有出錯.
3.大數據分析過程及采用的算法
利用統計分析、數據挖掘和機器學習方法,對數據進行分析處理,獲得分析結果,是數據分析處理流程的重要步驟。
1 import pandas as pd 2 import numpy as np 3 #讀取表數據
4 file_path = ('D:\地鐵5.csv') 5 file_data1 = pd.read_csv(file_path) 6 file_path = ('D:\地鐵6.csv') 7 file_data2 = pd.read_csv(file_path) 8 file_path = ('D:\地鐵7.csv') 9 file_data3 = pd.read_csv(file_path) 10 file_path = ('D:\地鐵8.csv') 11 file_data4 = pd.read_csv(file_path) 12 file_path = ('D:\地鐵9.csv') 13 file_data5 = pd.read_csv(file_path) 14 file_path = ('D:\地鐵10.csv') 15 file_data6 = pd.read_csv(file_path) 16 frame=[file_datal,file_data2,file_data3,file_data4,file_data5,file_data6] 17 #相同字段的表首位相接,合並表
18 result=pd.concat(frame) 19 result
開始讀取地鐵站三條線路所有站點的刷卡數據記錄
1 import pandas as pd 2 import numpy as np 3 #讀取地鐵站三條線路所有站點的刷卡數據記錄
4 #讀取地鐵站三條線路所有站點的刷卡數據記錄
5 file_path = open('D:\地鐵5.csv') 6 file_path = open('D:\地鐵6.csv') 7 file_path = open('D:\地鐵7.csv') 8 file_path = open('D:\地鐵8.csv') 9 file_path = open('D:\地鐵9.csv') 10 file_path = open('D:\地鐵10.csv') 11 file_data = pd.read_csv(file_path) 12 file_data
從讀取到的數據可以看出,刷卡數據記錄包括刷卡時間,乘客所在線路,搭車站點,刷卡設備號,刷卡狀態:有或沒有刷卡,客戶ID:一列字符串,支付類型有三種.
1 #所有站點的刷卡數據記錄
2 import pandas as pd 3 import numpy as np 4
5 #讀取所有站點的刷卡數據記錄
6 file_path = open('D:\地鐵5.csv') 7 file_path = open('D:\地鐵6.csv') 8 file_path = open('D:\地鐵7.csv') 9 file_path = open('D:\地鐵8.csv') 10 file_path = open('D:\地鐵9.csv') 11 file_path = open('D:\地鐵10.csv') 12 file_data = pd.read_csv(file_path) 13 file_data
接下來用“地鐵5”文檔為例進行客流量分析
1 import pandas as pd 2 import numpy as np 3 file_path = open('D:\地鐵5.csv') 4 file_data = pd.read_csv(file_path) 5 #創建一個DataFrame對象,該對象只有一列列數據:lineID[線路ID]
6 new_df = pd.DataFrame({'lineID':file_data['lineID'].unique()}) 7 new_df
讀取lineID一列的唯一值可以看出有三條地鐵線路讀取的時候和數據庫讀表有些類似,也可以根據要求讀表,也可以將記錄分組,排序等等
按lineID這一列將數據進行分組,並統計每個分組的數量
1 import math 2 import pandas as pd 3 import numpy as np 4 file_path = open('D:\地鐵5.csv') 5 file_data = pd.read_csv(file_path) 6 #按“lineID”列將file_data進行分組,並統計每個分組的數量
7 groupy_area = file_data.groupby(by='lineID').count() 8 groupy_area
按“userID”一列從大到小排列
1 import math 2 import pandas as pd 3 import numpy as np 4 file_path = open('D:\地鐵5.csv') 5 file_data = pd.read_csv(file_path) 6 #按“lineID”列將file_data進行分組,並統計每個分組的數量
7 groupy_area = file_data.groupby(by='lineID').count() 8 groupy_area 9 #按“userID”一列從大到小排列
10 groupy_area.sort_values(by=['userID'], ascending=False)
可以從圖表中看出,B站點的人流量最大,A站點最小,B站點越容易發生人流擁堵問題
#
1 import math 2 import pandas as pd 3 import numpy as np 4 file_path = open('D:\地鐵5.csv') 5 file_data = pd.read_csv(file_path) 6 #按“lineID”列將file_data進行分組,並統計每個分組的數量
7 groupy_area = file_data.groupby(by='stationID').count() 8 groupy_area
按“userID”一列從大到小排列
1 import math 2 import pandas as pd 3 import numpy as np 4 file_path = open('D:\地鐵5.csv') 5 file_data = pd.read_csv(file_path) 6 #按“lineID”列將file_data進行分組,並統計每個分組的數量
7 groupy_area = file_data.groupby(by='stationID').count() 8 groupy_area 9 #按“userID”一列從大到小排列
10 groupy_area.sort_values(by=['userID'], ascending=False) 11 #new=_df['數量']
從上圖數據可以看出,15號站點人流量最大,容易發生交通人流擁堵問題,74號站點人流量最少
按deviceID這一列將數據進行分組,並統計每個分組的數量
1 import math 2 import pandas as pd 3 import numpy as np 4 file_path = open('D:\地鐵5.csv') 5 file_data = pd.read_csv(file_path) 6 #按“lineID”列將file_data進行分組,並統計每個分組的數量
7 groupy_area = file_data.groupby(by='deviceID').count() 8 groupy_area
按“userID”一列從大到小排列
1 import math 2 import pandas as pd 3 import numpy as np 4 file_path = open('D:\地鐵5.csv') 5 file_data = pd.read_csv(file_path) 6 #按“lineID”列將file_data進行分組,並統計每個分組的數量
7 groupy_area = file_data.groupby(by='deviceID').count() 8 groupy_area 9 #按“userID”一列從大到小排列
10 groupy_area.sort_values(by=['userID'], ascending=False) 11 #new=_df['數量']
可以看出,474號設備的刷卡數最多,3130號設備的刷卡數最少
按照lineID分組,求每個分組的平均值
1 import pandas as np 2 import numpy as np 3 file_path = open('D:\地鐵5.csv') 4 file_data = pd.read_csv(file_path) 5 #求平均值
6 groupy_area = file_data.groupby(by='lineID').mean() 7 groupy_area
按照stationID分組,求每個分組的平均值
1 import pandas as np 2 import numpy as np 3 file_path = open('D:\地鐵5.csv') 4 file_data = pd.read_csv(file_path) 5 #求平均值
6 groupy_area = file_data.groupby(by='stationID').mean() 7 groupy_area
按照deviceID分組,求每個分組的平均值
1 import pandas as np 2 import numpy as np 3 file_path = open('D:\地鐵5.csv') 4 file_data = pd.read_csv(file_path) 5 #求平均值
6 groupy_area = file_data.groupby(by='deviceID').mean() 7 groupy_area
按照lineID分組,求每個分組的最大,最小值
1 import math 2 import pandas as pd 3 import numpy as np 4 file_path = open('D:\地鐵5.csv') 5 file_data = pd.read_csv(file_path) 6 #求分組最大值
7 groupy_area = file_data.groupby(by='deviceID').max() 8 groupy_area 9 #求最小值
10 groupy_area = file_data.groupby(by='deviceID').min() 11 groupy_area
由此可以看出最大值和最小值
4.數據可視化
數據可視化借助於圖形化手段,將數據分析結果直觀、清晰、有效地展現出來。使得用戶可以從不同的維度觀察數據,對數據有更深入地理解。說明每個可視化圖形表示的意義
箱型圖可以看出沒有沒有出現離散點,說明該數據集提供的數據很規范干凈,沒有出現異常值 。
1 #conding:utf8
2 #引入模塊
3 import matplotlib.pyplot as plt 4 import pandas as pd 5 import numpy as np 6 pd.set_option('mpl_style','default') 7 #配置畫板
8 fig = plt.figure() 9 fig.ax=plt.subplots() 10 #繪制箱型圖
11 file_path = open('D:\地鐵5.csv') 12 file_data = pd.read_csv(file_path) 13 #用ax參數指定在哪里繪制圖片
14 file_data.boxplot(ax=ax) 15 plt.savefig('d:\plot.png') 16 plt.show()
分組顯示箱形圖,比如數據中有的來自1號站點、有的來自於2號站點,有的來自3號站點,而后以stationID進行分組,然后繪制箱形圖;
1 #conding:utf8
2 #引入模塊
3 import matplotlib.pyplot as plt 4 import pandas as pd 5 import numpy as np 6 pd.set_option('mpl_style','default') 7 #配置畫板
8 fig = plt.figure() 9 fig.ax=plt.subplots() 10 #繪制箱型圖
11 file_path = open('D:\地鐵5.csv') 12 file_data = pd.read_csv(file_path) 13 #用ax參數指定在哪里繪制圖片
14 file_data.boxplot(ax=ax,by='stastionID') 15 plt.savefig('d:\plottow.png') 16 plt.show()
用函數繪制直方圖
1 #直方圖 2 import pandas as pd 3 import numpy as np 4 import matplotlib.pyplot as plt 5 import pandas as pd 6 import warnings 7 plt.rcParams['font.sans-serif'] = ['SimHei'] 8 plt.rcParams['axes.unicode_minus'] = False 9 10 filename = "地鐵5.csv" 11 colnames=["time","lineID","stationID","deviceID","status","userID","payType"] 12 #skiprows用於指定跳過csv文件的頭部的前幾行(標題等無效數據,否則程序會報錯) 13 df = pd.read_csv(filename,skiprows=1,names=colnames) 14 15 data=np.array(df['deviceID'][:30]) 16 index=df['stationID'][:30] 17 s = pd.Series(data,index) 18 s.name='地鐵5' 19 20 s.plot(kind='bar',title='地鐵五') 21 plt.grid() 22 plt.s 23 24 #2 25 plt.rcParams['font.sans-serif'] = ['SimHei'] 26 plt.rcParams['axes.unicode_minus'] = False 27 28 filename = "地鐵5.csv" 29 colnames=["time","lineID","stationID","deviceID","status","userID","payType"] 30 #skiprows用於指定跳過csv文件的頭部的前幾行(標題等無效數據,否則程序會報錯) 31 df = pd.read_csv(filename,skiprows=1,names=colnames) 32 33 data=np.array(df['deviceID'][1:30]) 34 index=df['stationID'][1:30] 35 s = pd.Series(data,index) 36 s.name='地鐵5' 37 38 s.plot(kind='bar',title='地鐵5') 39 plt.grid() 40 plt.show()
散點圖
1 #散點圖
2 import matplotlib.pyplot as plt 3 import pandas as pd 4 import numpy as np 5 #繪制散點圖
6 file_path = open('D:\地鐵5.csv') 7 file_data = pd.read_csv(file_path) 8 file_data 9 x=file_data.stationID 10 y=file_data.deviceID 11 plt.scatter(x,y) 12 plt.show()
繪制帶有核密度估計曲線的直方圖
1 #曲線直方圖
2 import matplotlib.pyplot as plt 3 import pandas as pd 4 import numpy as np 5 import seaborn as sns 6 #繪制核密度曲線直方圖
7 file_path = open('D:\地鐵5.csv') 8 file_data = pd.read_csv(file_path) 9 file_data 10 #用set()獲取默認繪圖
11 sns.set() 12 ax=sns.distplot(file_data.deviceID,bins=10) 13 ax
通過jointplot()創建多面板圖形
1 #繪制多面板圖形 2 import matplotlib.pyplot as plt 3 import pandas as pd 4 import numpy as np 5 import seaborn as sns 6 file_path = open('D:\地鐵5.csv') 7 file_data = pd.read_csv(file_path) 8 file_data 9 #繪制直方圖 10 #one=file_data.deviceID 11 ax=sns.jointplot(file_data.deviceID,file_data.stationID) 12 ax 13 plt.show()
5.附完整程序源代碼(以及輸出結果)
1 import pandas as pd 2 import numpy as up 3 file_path = open('D:\地鐵1.csv') 4 file_path = open('D:\地鐵2.csv') 5 file_path = open('D:\地鐵3.csv') 6 file_path = open('D:\地鐵4.csv') 7 file_path = open('D:\地鐵5.csv') 8 file_path = open('D:\地鐵6.csv') 9 file_path = open('D:\地鐵7.csv') 10 file_path = open('D:\地鐵8.csv') 11 file_path = open('D:\地鐵9.csv') 12 file_path = open('D:\地鐵10.csv') 13 file_data = pd.read_csv(file_path) 14 #查看空值,缺失值 15 file_data.isnull() 16 17 import pandas as pd 18 import numpy as up 19 file_path = open('D:\地鐵1.csv') 20 file_path = open('D:\地鐵2.csv') 21 file_path = open('D:\地鐵3.csv') 22 file_path = open('D:\地鐵4.csv') 23 file_path = open('D:\地鐵5.csv') 24 file_path = open('D:\地鐵6.csv') 25 file_path = open('D:\地鐵7.csv') 26 file_path = open('D:\地鐵8.csv') 27 file_path = open('D:\地鐵9.csv') 28 file_path = open('D:\地鐵10.csv') 29 file_data = pd.read_csv(file_path) 30 #查看缺失值,缺失值 31 file_data.notnull() 32 33 import pandas as np 34 import numpy as np 35 file_path = open('D:\地鐵1.csv') 36 file_path = open('D:\地鐵2.csv') 37 file_path = open('D:\地鐵3.csv') 38 file_path = open('D:\地鐵4.csv') 39 file_path = open('D:\地鐵5.csv') 40 file_path = open('D:\地鐵6.csv') 41 file_path = open('D:\地鐵7.csv') 42 file_path = open('D:\地鐵8.csv') 43 file_path = open('D:\地鐵9.csv') 44 file_path = open('D:\地鐵10.csv') 45 file_data = pd.read_csv(file_path) 46 #標記重復值 47 file_data.duplicated() 48 49 import pandas as pd 50 import numpy as np 51 #讀取表數據 52 file_path = ('D:\地鐵5.csv') 53 file_data1 = pd.read_csv(file_path) 54 file_path = ('D:\地鐵6.csv') 55 file_data2 = pd.read_csv(file_path) 56 file_path = ('D:\地鐵7.csv') 57 file_data3 = pd.read_csv(file_path) 58 file_path = ('D:\地鐵8.csv') 59 file_data4 = pd.read_csv(file_path) 60 file_path = ('D:\地鐵9.csv') 61 file_data5 = pd.read_csv(file_path) 62 file_path = ('D:\地鐵10.csv') 63 file_data6 = pd.read_csv(file_path) 64 frame=[file_datal,file_data2,file_data3,file_data4,file_data5,file_data6] 65 #相同字段的表首位相接,合並表 66 result=pd.concat(frame) 67 result 68 69 import pandas as pd 70 import numpy as np 71 #讀取地鐵站三條線路所有站點的刷卡數據記錄 72 #讀取地鐵站三條線路所有站點的刷卡數據記錄 73 file_path = open('D:\地鐵5.csv') 74 file_path = open('D:\地鐵6.csv') 75 file_path = open('D:\地鐵7.csv') 76 file_path = open('D:\地鐵8.csv') 77 file_path = open('D:\地鐵9.csv') 78 file_path = open('D:\地鐵10.csv') 79 file_data = pd.read_csv(file_path) 80 file_data 81 82 #所有站點的刷卡數據記錄 83 import pandas as pd 84 import numpy as np 85 86 #讀取所有站點的刷卡數據記錄 87 file_path = open('D:\地鐵5.csv') 88 file_path = open('D:\地鐵6.csv') 89 file_path = open('D:\地鐵7.csv') 90 file_path = open('D:\地鐵8.csv') 91 file_path = open('D:\地鐵9.csv') 92 file_path = open('D:\地鐵10.csv') 93 file_data = pd.read_csv(file_path) 94 file_data 95 96 import pandas as pd 97 import numpy as np 98 file_path = open('D:\地鐵5.csv') 99 file_data = pd.read_csv(file_path) 100 #創建一個DataFrame對象,該對象只有一列列數據:lineID[線路ID] 101 new_df = pd.DataFrame({'lineID':file_data['lineID'].unique()}) 102 new_df 103 104 import math 105 import pandas as pd 106 import numpy as np 107 file_path = open('D:\地鐵5.csv') 108 file_data = pd.read_csv(file_path) 109 #按“lineID”列將file_data進行分組,並統計每個分組的數量 110 groupy_area = file_data.groupby(by='lineID').count() 111 groupy_area 112 113 import math 114 import pandas as pd 115 import numpy as np 116 file_path = open('D:\地鐵5.csv') 117 file_data = pd.read_csv(file_path) 118 #按“lineID”列將file_data進行分組,並統計每個分組的數量 119 groupy_area = file_data.groupby(by='lineID').count() 120 groupy_area 121 #按“userID”一列從大到小排列 122 groupy_area.sort_values(by=['userID'], ascending=False) 123 124 import math 125 import pandas as pd 126 import numpy as np 127 file_path = open('D:\地鐵5.csv') 128 file_data = pd.read_csv(file_path) 129 #按“lineID”列將file_data進行分組,並統計每個分組的數量 130 groupy_area = file_data.groupby(by='stationID').count() 131 groupy_area 132 133 import math 134 import pandas as pd 135 import numpy as np 136 file_path = open('D:\地鐵5.csv') 137 file_data = pd.read_csv(file_path) 138 #按“lineID”列將file_data進行分組,並統計每個分組的數量 139 groupy_area = file_data.groupby(by='stationID').count() 140 groupy_area 141 #按“userID”一列從大到小排列 142 groupy_area.sort_values(by=['userID'], ascending=False) 143 #new=_df['數量'] 144 145 import math 146 import pandas as pd 147 import numpy as np 148 file_path = open('D:\地鐵5.csv') 149 file_data = pd.read_csv(file_path) 150 #按“lineID”列將file_data進行分組,並統計每個分組的數量 151 groupy_area = file_data.groupby(by='deviceID').count() 152 groupy_area 153 154 import math 155 import pandas as pd 156 import numpy as np 157 file_path = open('D:\地鐵5.csv') 158 file_data = pd.read_csv(file_path) 159 #按“lineID”列將file_data進行分組,並統計每個分組的數量 160 groupy_area = file_data.groupby(by='deviceID').count() 161 groupy_area 162 #按“userID”一列從大到小排列 163 groupy_area.sort_values(by=['userID'], ascending=False) 164 #new=_df['數量'] 165 166 import pandas as np 167 import numpy as np 168 file_path = open('D:\地鐵5.csv') 169 file_data = pd.read_csv(file_path) 170 #求平均值 171 groupy_area = file_data.groupby(by='lineID').mean() 172 groupy_area 173 174 import pandas as np 175 import numpy as np 176 file_path = open('D:\地鐵5.csv') 177 file_data = pd.read_csv(file_path) 178 #求平均值 179 groupy_area = file_data.groupby(by='stationID').mean() 180 groupy_area 181 182 import pandas as np 183 import numpy as np 184 file_path = open('D:\地鐵5.csv') 185 file_data = pd.read_csv(file_path) 186 #求平均值 187 groupy_area = file_data.groupby(by='deviceID').mean() 188 groupy_area 189 190 import math 191 import pandas as pd 192 import numpy as np 193 file_path = open('D:\地鐵5.csv') 194 file_data = pd.read_csv(file_path) 195 #求分組最大值 196 groupy_area = file_data.groupby(by='deviceID').max() 197 groupy_area 198 #求最小值 199 groupy_area = file_data.groupby(by='deviceID').min() 200 groupy_area 201 202 #conding:utf8 203 #引入模塊 204 import matplotlib.pyplot as plt 205 import pandas as pd 206 import numpy as np 207 pd.set_option('mpl_style','default') 208 #配置畫板 209 fig = plt.figure() 210 fig.ax=plt.subplots() 211 #繪制箱型圖 212 file_path = open('D:\地鐵5.csv') 213 file_data = pd.read_csv(file_path) 214 #用ax參數指定在哪里繪制圖片 215 file_data.boxplot(ax=ax) 216 plt.savefig('d:\plot.png') 217 plt.show() 218 219 #conding:utf8 220 #引入模塊 221 import matplotlib.pyplot as plt 222 import pandas as pd 223 import numpy as np 224 pd.set_option('mpl_style','default') 225 #配置畫板 226 fig = plt.figure() 227 fig.ax=plt.subplots() 228 #繪制箱型圖 229 file_path = open('D:\地鐵5.csv') 230 file_data = pd.read_csv(file_path) 231 #用ax參數指定在哪里繪制圖片 232 file_data.boxplot(ax=ax,by='stastionID') 233 plt.savefig('d:\plottow.png') 234 plt.show() 235 236 #直方圖 237 import pandas as pd 238 import numpy as np 239 import matplotlib.pyplot as plt 240 import pandas as pd 241 import warnings 242 plt.rcParams['font.sans-serif'] = ['SimHei'] 243 plt.rcParams['axes.unicode_minus'] = False 244 filename = "地鐵5.csv" 245 colnames=["time","lineID","stationID","deviceID","status","userID","payType"] 246 #skiprows用於指定跳過csv文件的頭部的前幾行(標題等無效數據,否則程序會報錯) 247 df = pd.read_csv(filename,skiprows=1,names=colnames) 248 data=np.array(df['deviceID'][:30]) 249 index=df['stationID'][:30] 250 s = pd.Series(data,index) 251 s.name='地鐵5' 252 s.plot(kind='bar',title='地鐵五') 253 plt.grid() 254 plt.s 255 #2 256 plt.rcParams['font.sans-serif'] = ['SimHei'] 257 plt.rcParams['axes.unicode_minus'] = False 258 filename = "地鐵5.csv" 259 colnames=["time","lineID","stationID","deviceID","status","userID","payType"] 260 #skiprows用於指定跳過csv文件的頭部的前幾行(標題等無效數據,否則程序會報錯) 261 df = pd.read_csv(filename,skiprows=1,names=colnames) 262 data=np.array(df['deviceID'][1:30]) 263 index=df['stationID'][1:30] 264 s = pd.Series(data,index) 265 s.name='地鐵5' 266 s.plot(kind='bar',title='地鐵5') 267 plt.grid() 268 plt.show() 269 270 #散點圖 271 import matplotlib.pyplot as plt 272 import pandas as pd 273 import numpy as np 274 #繪制散點圖 275 file_path = open('D:\地鐵5.csv') 276 file_data = pd.read_csv(file_path) 277 file_data 278 x=file_data.stationID 279 y=file_data.deviceID 280 plt.scatter(x,y) 281 plt.show() 282 283 #曲線直方圖 284 import matplotlib.pyplot as plt 285 import pandas as pd 286 import numpy as np 287 import seaborn as sns 288 #繪制核密度曲線直方圖 289 file_path = open('D:\地鐵5.csv') 290 file_data = pd.read_csv(file_path) 291 file_data 292 #用set()獲取默認繪圖 293 sns.set() 294 ax=sns.distplot(file_data.deviceID,bins=10) 295 ax
(四)、總結(10 分)
對本課程設計的整體完成情況做一個總結,包括:
1.通過對數據分析和挖掘,得到哪些有益的結論?是否達到預期的目標?
2.自己在完成此設計過程中,得到哪些收獲?以及要改進的建議
通過這次利用Pandas數據分析工具地鐵站乘客人流量數據,讓我掌握了最基礎的數據分析知識,體驗了數據分析的樂趣,包括數據預處理,數據清洗,異常值的查找等,數據的合並和分組及聚合,還有數據可視化來直觀的觀察.分析數據。雖然學的知識比較簡單,但是激發了我對數據分析的學習熱情,相信只要繼續持續學習下去,我的數據分析知識儲備和數據分析能力也會更近一步,同時也讓我明白了在當今大數據,雲計算,物聯網,人工智能迅速發展的新時代,人們每天產生的數據蘊藏着巨大的價值。