請先閱讀「中國年輕人正帶領國家走向危機」,這鍋背是不背? 一文,以對「手把手教你完成一個數據科學小項目」系列有個全局性的瞭解。php
本系列代碼統一開源在GitHub:DesertsX/gulius-projects ,感興趣的朋友能夠先行 star 哈。html
截至目前咱們已經完成了數據爬取、數據提取與IP查詢、數據異常與清洗、評論數變化狀況分析、省份提取與可視化、城市提取與可視化,本文將調用百度地圖 API 獲取地理位置的經緯度,並使用 BDP 繪製動態熱力圖。
git
以前系列文章和代碼的最後末尾都可自行保存每次操做後的數據,好比新建立的那些列等等。github
import pandas as pd
df = pd.read_csv('Sina_Finance_Comments_All_20180811_Cleaned.csv',encoding='utf-8')
df.head(2)
複製代碼
本回使用百度地圖開放平臺的 API 獲取經緯度數據,讀者也能夠試下用高德地圖、谷歌地圖等等實現。首先在百度地圖開放平臺(需登陸操做)的「控制檯
」處點擊「建立應用
」;能夠隨意填寫「應用名稱
」,好比:地圖經緯度
;在「IP白名單
」處可按照提示填寫 0.0.0.0/0
,方便在不一樣的電腦上操做,而後點擊「提交」便可建立成功。應用列表
裏生成了應用,而訪問應用(AK)
就是後面調用 API 時所需的參數。web
在Web服務API
中找到所需的服務,本次是根據地理信息獲取經緯度,因而正/逆地理編碼
,按照服務文檔
的說明,調用API。注意調用次數的限制。
正/逆地理編碼 - 百度地圖Web服務APIjson
import requests
def area2coor(area):
ak = '換成你的ak' # 應用列表裏訪問應用(AK)的一串字符
try:
# http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding
address = area
url = 'http://api.map.baidu.com/geocoder/v2/?address=' + address + '&output=json&ak=' + ak
json_data = requests.get(url = url).json()
coor_loc = json_data['result']['location']
return coor_loc
except:
return "nocoor" # 不換ak多半都是 'nocoor'
print(df.loc[0,'area'])
area2coor(df.loc[0,'area'])
複製代碼
上面先測試下,能拿到經緯度後,建立經緯度列:api
%%time
df['coor_loc'] = df.area.apply(area2coor)
df.coor_loc
複製代碼
選出非'nocoor'的數據,再分別拿到經度和緯度,而後就能夠導出數據,以便後面在BDP裏操做。bash
df_coor = df[df['coor_loc'] != 'nocoor']
df_coor['lng'] = df_coor['coor_loc'].apply(lambda x: x['lng']) # 經度
df_coor['lat'] = df_coor['coor_loc'].apply(lambda x: x['lat']) # 緯度
df_coor[['lng','lat']]
複製代碼
df_coor.to_csv('Sina_Finance_Comments_All_20180811_toBDP.csv', encoding='utf-8', line_terminator='\r\n')
複製代碼
古柳之前也用過 BDP,因此這回拿到數據後,就想着間隔近一年的時間後從新繪製動態熱力圖,雖則早已生疏了,但之前機智的寫過一篇「使用手冊」:(送福利)BDP繪製微博轉發動態熱力圖,因而按照文中步驟很快就從新撿回並製做出來了。
網絡
具體步驟就不截圖演示了,更詳細的步驟請參考上面給出的文章,內含爬取的微博轉發數據集,可供把玩(用Gephi一則熱門微博的14層轉發網絡圖譜:《Gephi繪製微博轉發圖譜:以「@老婆孩子在天堂」爲例》):
app
此處僅記錄大體操做步驟以下:
更改設置參數,以便錄製 GIF 時展現效果更佳:
可根據數據量、數據展現的效果、以及自身的要求自行修改。最後就拿到了文章評論的動態熱力圖,仍是蠻酷的。
本系列代碼統一開源在GitHub:DesertsX/gulius-projects ,感興趣的朋友能夠先行 star 哈。
本系列文章:
「中國年輕人正帶領國家走向危機」,這鍋背是不背?
手把手教你完成一個數據科學小項目(1):數據爬取
手把手教你完成一個數據科學小項目(2):數據提取、IP 查詢
手把手教你完成一個數據科學小項目(3):數據異常與清洗
手把手教你完成一個數據科學小項目(4):評論數變化狀況
手把手教你完成一個數據科學小項目(5):省份提取與可視化
手把手教你完成一個數據科學小項目(6):城市提取與可視化
歡迎關注公衆號「牛衣古柳」哈!