Re: [問題]pandas重複分割,重複存檔

作者: localhostphp (A動動)   2015-04-12 12:58:38
# -*- coding: utf-8 -*-
import pandas as pd
from geocodequery import GeocodeQuery
df = pd.read_csv('./birdsIwant3.csv',low_memory=False)
def addrs(location):
gq = GeocodeQuery("zh-tw", "tw")
gq.get_geocode(location)
print location
return pd.Series({"lat": gq.get_lat(), "lng": gq.get_lng()})
def test(location):
return pd.Series({"lat" :5, "lng":10})
df['lat'] = 0
df['lng'] = 0
query_count = 2
loop_count = int(df.shape[0]/query_count)
for lc in range(2):
df.loc[lc*query_count: (lc+1)*query_count, ['lat','lng']] = df[lc*query_count: (lc+1)*query_count]['location'].apply(addrs) ##the problem##
df.to_csv('./birdsIwant3_1.csv',index=False)
print pd.read_csv('./birdsIwant3_1.csv', low_memory=False)
query_count 是每次回圈查詢的次數
loop_count 是計算總共需要跑幾次迴圈
我跑了兩個迴圈,print只截取有lat lng的
count.317 birdName.317 lat lng
0 NaN NaN 24.373316 121.310400
1 NaN NaN 24.205938 121.010132
2 NaN NaN 24.373316 121.310400
3 NaN NaN 24.774906 120.970782
是有存進去的
因為檔案很大,每次寫回去都有點久
如果記憶體充足或者api不會被google擋掉的話,可以考慮看看全部查完再寫回去
或者試試看每個迴圈拆成一個檔案最後合併起來
不知道有沒有解決你的問題,有問題在一起討論~
作者: allen511081 (藍)   2015-04-12 14:14:00
可以考慮每個迴圈拆成一個檔案,但這後續合併會不會有問題?現在剩下只要超過300筆就會沒辦法跑的問題
作者: localhostphp (A動動)   2015-04-12 15:15:00
合併會有什麼問題嗎?超過300筆個人認為是google的問題,如果沒經過申請或者購買,短時間要大量資料會被google認為是攻擊的行為,所以會被擋住" target="_blank" rel="nofollow">
如果不是google問題,可以貼上完整錯誤訊息嗎?" target="_blank" rel="nofollow">
10060我猜測應該是google問題了
作者: allen511081 (藍)   2015-04-13 09:06:00
[error:10060]應該是google的問題,但是我的for loop在google一天2500筆的限制裡,只要超過300筆,也是會出現相同錯誤,"連線嘗試失敗,因為連線對象有一段時間並未正確回應,或是連線建立失敗,因為連線的主機無法回應"
作者: localhostphp (A動動)   2015-04-14 11:27:00
這我比較不確定了,google可能限制短時間內不能連查
作者: allen511081 (藍)   2015-04-14 12:05:00
應該也是這樣,想請問一下,現在我想將原始資料切成抱歉,上面有點發問錯1.想將原始資料全部分成2500筆為一個檔案2.因為不能短時間內針對2500筆資料取得經緯度,想要加入time的語法進去,做sleep的動作請教你,上面兩個問題有辦法可以在同支程式碼解決嗎?
作者: localhostphp (A動動)   2015-04-16 00:12:00
切檔案就把query count 改成2500把查詢拿掉就好了,建議查詢的資料如果有重複的也可以先濾出來再查

Links booklink

Contact Us: admin [ a t ] ucptt.com