最近稍微研究了一下pandas如何做數(shù)據(jù)分析,本文主要記錄下常用的用法:去重,分組計(jì)數(shù),分組求和求平均,畫直方圖,畫熱力圖.相關(guān)文檔建議參考pandas的文檔http://pandas.pydata.org/pandas-docs/stable/cookbook.html
題外話
首先說下用了pandas真的對java處理excel深惡痛絕...強(qiáng)類型轉(zhuǎn)換經(jīng)常需要我們進(jìn)行復(fù)雜的變量類型判斷,python這方面簡單的多,比如時(shí)間,讀成文本然后格式化,真的很方便
import pandas as pd
path = r'/app/web/pt'
os.chdir(path)
df = pd.read_excel(r'test.xls', na_values=['null'], dtype={'日期': str})
df['日期'] = pd.to_datetime(df['日期'])
df.to_excel(r'result.xls')
讀寫excel就是這么容易,分分鐘打算放棄java
1.去重
df.drop_duplicates("a2") //以a2列為基準(zhǔn)去重
df.drop_duplicates(["a2","a3"]) //
df.drop_duplicates("a2",keep='first') //去重 保留第一個(gè)
2.分組計(jì)數(shù)
df = df.groupby(['row1', 'row2']).size() //分組計(jì)數(shù)
df = df.groupby(['row1', 'row2']).mean() //分組求平均
3.畫直方圖
畫直方圖是畫圖里最簡單的,把list放在plt的hist里面做參數(shù)即可
path = r'/app/web/pt'
os.chdir(path)
df = pd.read_excel(r'test.xlsx', na_values=['nan'])
new_seris = df.loc[(df['區(qū)域'] =='D'),'歸類后']
values = []
values = new_seris.tolist()
plt.xlabel("歸類")
plt.ylabel("頻次")
plt.hist(values)
plt.title(u"A區(qū)問題分布直方圖")
plt.show()
4.根據(jù)地址求經(jīng)緯度
照搬百度api,不過自己得申請個(gè)vk碼,對并發(fā)量和次數(shù)有限制.不過可以多帳號(hào)多線程去做
def check(address):
time.sleep(2)
try:
r = requests.get(
"http://api.map.baidu.com/place/v2/search?query=" + address + "®ion=北京&output=json&ak=nLpN5iKztxIWsPqgwsyrruUG")
except:
return 0, 0
s = json.loads(r.text)
print(r.text)
try:
lat = s["results"][0]["location"]["lat"]
lng = s["results"][0]["location"]["lng"]
return lat, lng
except:
return 0, 0
5 根據(jù)經(jīng)緯度畫熱力圖
同樣的百度熱力圖由api,只要修改內(nèi)部的經(jīng)緯代碼,換上自己的帳號(hào)即可,這里截圖看下效果

2018-06-11 22-37-08 的屏幕截圖.png
結(jié)束語
以上是最近的一點(diǎn)小研究的總結(jié),當(dāng)作一個(gè)記錄而已.謝謝閱讀
個(gè)人博客 歡迎訪問~
祝大家編碼愉快,工作愉快,歡迎關(guān)注我的公眾號(hào),一起分享交流

Java技術(shù)小棧