成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

用 python 做數(shù)據(jù)分析:pandas 的 excel 應用初探

aervon / 3046人閱讀

摘要:今天要分享的是,用來寫。數(shù)據(jù)處理環(huán)節(jié)效率低下,易受干擾。問題排查難以溯源。一旦數(shù)據(jù)報告有誤,想要定位問題所在,常常需要從頭開始復盤。結果和上面結果結構是一致的。這是官網(wǎng)的文檔,但是卻不完全適用目前的場景。

大毛 豈安科技業(yè)務風險分析師
多年訂單業(yè)務反欺詐經(jīng)驗,負責豈安科技多款產(chǎn)品運營工作。

上回筆者分享過一些 pandas 的常用數(shù)據(jù)查詢語法,但是數(shù)據(jù)查詢對于 pandas 而言只是冰山一角,它還有著更多更有價值的的應用場景。今天要分享的是,用 pandas 來寫 excel。

我的數(shù)據(jù)分析工作經(jīng)常是在這樣的場景下開展的:數(shù)據(jù)格式五花八門,有些存儲在關系型數(shù)據(jù)庫內(nèi),有些則是 csv 或者是 json,而最后老板想要的數(shù)據(jù)報告是 excel 版本的。

在沒有使用 pandas 處理數(shù)據(jù)以前,我會周旋在各個數(shù)據(jù)源之間,將取完的數(shù)之后黏貼到 excel 中,最終在統(tǒng)一在 excel 內(nèi)進行處理。

這個操作有一些缺陷:

? 各個數(shù)據(jù)源取數(shù)方法不統(tǒng)一。自己掌握可以通過反復操作熟練,一旦教授給新人需要花更多時間。
? 數(shù)據(jù)處理環(huán)節(jié)效率低下,易受干擾。在頻繁的復制黏貼中,很難確保不受外界干擾,一旦恍神了,很難想起剛剛的取數(shù)的一些細節(jié)。并且過多的復制黏貼可能導致excel崩潰。
? 問題排查難以溯源。仔細想來,excel承擔了打草稿的功能,在多次復制黏貼之后,沒有人會清楚記得每一步為什么復制黏貼。一旦數(shù)據(jù)報告有誤,想要定位問題所在,常常需要從頭開始復盤。

?如果把數(shù)據(jù)的獲取到處理全部交給 pandas 呢?

這樣一來 excel 只負責最終呈現(xiàn)層面的功能。為了實現(xiàn)這些,除了 pandas 本身強大的數(shù)據(jù)分析功能之外,還得益于兩點:

pandas 良好的數(shù)據(jù)讀取接口

xlsxwriter

良好的數(shù)據(jù)讀取接口

一旦 import pandas as pd 了之后,就可以任意的 pd.read_json / pd.read_csv / pd.read_sql 了,是不是很方便?

example.json
[{
      "teamName": "GoldenArch", 
      "distCode": 04, 
      "distArea": "Shanghai", 
      "month": 11, 
      "income": 16255, 
      "cost": 30250,
},
{
      "teamName": "OldFather", 
      "distCode": 02, 
      "distArea": "Beijing", 
      "month": 11, 
      "income": 135300, 
      "cost": 27200,
}]

結果

csv,相對省力,甚至可以用 excel 直接打開處理,不過這種方式影響到了這個數(shù)據(jù)處理方案的一致性。舉例略。

data_csv = pd.read_csv("example.csv")

結果和上面json結果結構是一致的。

sql,最復雜的一項,在 read_sql 之前,你還需要關心數(shù)據(jù)庫連接問題,和要處理的 sql 語句問題。
這里我遭遇的坑在后者,如果你打算用 read_sql 打入 dataframe 的是一張大表,那么可以暫時放棄這個念頭,因為在 read_sql 的過程中,雖然讀表很快,但是寫入 dataframe 的速度卻受制于數(shù)據(jù)規(guī)模,個人建議是,如果人類沒有耐心把這些數(shù)據(jù)一一讀完,那么就不要打給 dataframe,至少在目前的 0.20 版本是這樣。不過好在我們可以在語句上做處理,在 where 之后按需做一些 group 或者 limit。

#數(shù)據(jù)庫連接部分
import pymysql
def getConn():
    connect_config = {
        "host":"0.1.0.1",
        "port":8888,
        "user":"myname",
        "password":"mypassword",
        "db":"mydb",
                "charset":"utf8"
    }
    conn = pymysql.connect(**connect_config)
    return conn
#實例化連接對象
conn = getConn()
#語句
sql = "select company, sum(totaAmount) from myTable where ... and ... group by company"
#最熟悉的語法
data_sql = pd.read_sql(sql,con=conn)

結果和上面 json 結果結構是一致的

這個環(huán)節(jié)最大的收益就是將所有來源的數(shù)據(jù) dataframe 或者 series 化了,然后就可以統(tǒng)一用 pandas 功能來進行下一步數(shù)據(jù)處理工作。數(shù)據(jù)處理環(huán)節(jié)環(huán)節(jié)太龐大,本文不做描述。這里我們跳過了處理環(huán)節(jié),直奔 excel。

xlsxwriter

這個包的作用就是用 python 語法來寫 excel 文件,在把所有關心的數(shù)據(jù)都裁剪完成后,下一步就是把它們按需塞進 excel 中。
import xlsxwriter 之后,用三行代碼就能用 python 創(chuàng)建一個 excel 文件。

workbook = xlsxwriter.Workbook("helloworld.xlsx")
worksheet = workbook.add_worksheet(‘made by xlsxwriter’)
workbook.close()

簡單吧,看字面意思就能理解——先創(chuàng)建文件,再創(chuàng)建表單,最后關閉。這是官網(wǎng)的文檔,但是卻不完全適用目前的場景。因為,我們需要借助于 pandas 來寫,而不是直接寫。

  df = pd.DataFrame({"Data": [10, 20, 30, 20, 15, 30, 45]})
    writer = pd.ExcelWriter("example2.xlsx", engine="xlsxwriter")
    df.to_excel(writer, sheet_name="Sheet1")
    writer.save()

這也是官網(wǎng)的文檔,這兩種方法處理 excel 都可以,區(qū)別是前者是可以方便地指定打在哪些格子里,而后者是將數(shù)據(jù)作為一個整體的打入 excel,這里更推薦后者。如果是多個不同數(shù)據(jù)源或者不同意義的數(shù)據(jù),可以在 to_excel 的時候,新增一些 Sheet 來分類數(shù)據(jù),sheet_name 參數(shù),使得你能自如的掌控數(shù)據(jù)的內(nèi)容。

所謂的塞數(shù)據(jù)也就是把你最終處理完的 dataframe 或者 series 交給了 excel,用 sheet_name 來管理不同意義的數(shù)據(jù)。
取數(shù)工作一般是周期性的,在數(shù)據(jù)需求沒有產(chǎn)品化之前,需要利用更高效的工具來壓縮取數(shù)環(huán)節(jié)所耗費的時間,將更多的精力留給數(shù)據(jù)分析之后結論以及建議上,畢竟分析才是數(shù)據(jù)價值。
上述方案比 excel+ 復制黏貼來的高效且可靠,既統(tǒng)一了數(shù)據(jù)采集方式,又使得取數(shù)過程可視化且易于維護。成本則是你需要花一些時間閱讀 pandas 和 xlsxwriter 的文檔,而 python 環(huán)境的搭建幾乎是零成本的。

xlsxwriter文檔:http://xlsxwriter.readthedocs.io
pandas文檔:http://pandas.pydata.org/pand...

文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/17653.html

相關文章

  • python 數(shù)據(jù)分析pandas excel初探

    摘要:今天要分享的是,用來寫。數(shù)據(jù)處理環(huán)節(jié)效率低下,易受干擾。問題排查難以溯源。一旦數(shù)據(jù)報告有誤,想要定位問題所在,常常需要從頭開始復盤。結果和上面結果結構是一致的。這是官網(wǎng)的文檔,但是卻不完全適用目前的場景。 大毛 豈安科技業(yè)務風險分析師 多年訂單業(yè)務反欺詐經(jīng)驗,負責豈安科技多款產(chǎn)品運營工作。 上回筆者分享過一些 pandas 的常用數(shù)據(jù)查詢語法,但是數(shù)據(jù)查詢對于 pandas 而言只是冰...

    張憲坤 評論0 收藏0
  • Python數(shù)據(jù)分析Pandas數(shù)據(jù)查詢語法

    摘要:在使用之前,大多數(shù)數(shù)據(jù)分析師已經(jīng)掌握了和,并且在剛上手時會經(jīng)常習慣性想到老辦法。這種根據(jù)列值選取行數(shù)據(jù)的查詢操作,推薦使用方法。如果我又有一批數(shù)據(jù),需要將兩部分數(shù)據(jù)合并。 大毛 豈安科技業(yè)務風險分析師 多年訂單業(yè)務反欺詐經(jīng)驗,負責豈安科技多款產(chǎn)品運營工作。 在使用Pandas之前,大多數(shù)數(shù)據(jù)分析師已經(jīng)掌握了Excel和SQL,并且在剛上手Pandas時會經(jīng)常習慣性想到老辦法。如果誰能把...

    gghyoo 評論0 收藏0
  • 【精華分享】:轉(zhuǎn)行數(shù)據(jù)分析一份學習清單

    摘要:數(shù)據(jù)分析的發(fā)展方向一般有商業(yè)方向,行業(yè)分析業(yè)務方向,和機器學習數(shù)據(jù)挖掘方向。機器學習的書籍推薦統(tǒng)計學習方法,機器學習,機器學習實戰(zhàn)三本書。 作者:xiaoyu 微信公眾號:Python數(shù)據(jù)科學 知乎:python數(shù)據(jù)分析師 上一篇主要分享了博主親身轉(zhuǎn)行數(shù)據(jù)分析的經(jīng)歷: 【從零學起到成功轉(zhuǎn)行數(shù)據(jù)分析,我是怎么做的?】 本篇繼上一篇將分享轉(zhuǎn)行數(shù)據(jù)分析的一些經(jīng)驗和學習方法,看完這篇你將會解...

    suemi 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<