1. 程式人生 > >基於 Python 和 Pandas 的數據分析(1)

基於 Python 和 Pandas 的數據分析(1)

下載 and 繼續 編輯器 ade start 比較 顯示 -s

基於 Python 和 Pandas 的數據分析(1)

Pandas 是 Python 的一個模塊(module), 我們將用 Python 完成接下來的數據分析的學習. Pandas 模塊是一個高性能,高效率和高水平的數據分析庫.

從本質上講,它非常像操作電子表格的無頭版本,如Excel. 我們所使用的大部分的數據集都可以被轉換成 dataframes(數據框架). 你可能對這個術語比較熟悉了, 它被廣泛地用於很多語言. 但是如果你不熟悉, 可以看下我的解釋: 一個 dataframe 就很像是一個僅有行和列組成的電子表格. 現在開始, 我們可以使用 Pandas 以光速對數據集進行一系列的操作.

Pandas 也是可以與很多其他數據分析庫兼容的, 比如用於機器學習的 Scikit-Learn, 用於圖形繪制的 Matplotlib, NumPy 等. Pandas 的性能非常強大, 非常值得學習. 如果你在使用 excel 或者其他電子表格處理大量的計算任務, 那麽通常需要1分鐘或者1小時去完成某些工作, Pandas 將改變這一切.

另一個好消息, 你可以很容易地載入/輸出 xls 或者 xlsx 格式的文件. 所以即使你的老板還是習慣以往的格式, 你也可以輕松應對. Pandas 還同時兼容很多文本文件, 如 csv, xml, html 等.

如果你是初次接觸 Python 語言, 沒有關系, 我相信你一樣可以繼續下面的課程, 而且這個教程甚至可以作為你 Python 的一個初步入門教程.

如果你還沒有安裝 Python, 直接去官網https://www.python.org/下載一個最新版本, 並安裝.
這裏我先假設你已經安裝了 Python. 下一步, 打開終端執行

pip3 install pandas
pip3 install numpy

安裝 Pyton 相關包的方式有很多, 通過 pip 是最簡單的方式.

關於編輯器, 選擇自己順手的就行, 我用的是 visual Code.
下面就來通過一個簡單的實操, 認識一下 dataframe.

首先, 做一些簡單的引入:

import pandas as pd
import datetime
import pandas_datareader.data as web

這裏, 我們使用了 "import pandas as pd". 這算是引入 Pandas 的通用用法. 接著, 我們引入 datetime, 我們會用這個包做一些關於時間的操作. 最後, 引入 "import pandas.io.data as web", 我們需要用這個從網上拉取數據.

start = datetime.datetime(2010, 1, 1)
end = datetime.datetime.now()

這裏, 我們創建了 start 和 end 兩個變量, 它們都是 datatime 的對象. 我們會拉取從2010年1月1日到今天的數據. 下面我們就來創建一個 dataframe:

df = web.DataReader("XOM", "yahoo", start, end)

這行代碼實現了從 yahoo API 拉取 XOM 的數據, 並賦值給變量 df. 把存儲dataframe 的變量命名為 df, 並不是強制的, 但是是一種通用的方式, 可以讓人從命名快速識別出這是一個 dataframe 的變量, 而無需追蹤代碼.
所以現在我們就獲得了一個 dataframe, 那麽我們要如何查看它的內容呢? 對, 我們可以用 print() 函數:

print(df)

目前是要求打印所有的數據, 終端顯示的時候會省略掉中間部分的數據, 但是即便這樣, 數據量依然很大. 所以, 大家一般都習慣只輸出前5行數據:

print(df.head())

輸出:

                 High        Low       Open      Close      Volume  Adj Close
Date
2009-12-31  68.860001  68.110001  68.839996  68.190002  18852300.0  51.152096
2010-01-04  69.260002  68.190002  68.720001  69.150002  27809100.0  51.872231
2010-01-05  69.449997  68.800003  69.190002  69.419998  30174700.0  52.074772
2010-01-06  70.599998  69.339996  69.449997  70.019997  35044700.0  52.524845
2010-01-07  70.059998  69.419998  69.900002  69.800003  27192100.0  52.359821

這樣就輸出了前5行數據, 這有助於 debug, 並且可以查看整體的數據結構.

以上就是我想帶給大家的初步的入門介紹. 但是還有一件事: 數據可視化. 就像我前面提到的, Pandas 與很多其他的模塊都有很好的兼容性, Matplotlib 就是其中一個. 大家可以在終端執行

pip3 install matplotlib

其實, 理論上裝過 pandas, matplotlib 就應該已經自動安裝了, 這裏只是要大家再確認一下. 現在, 就可以在腳本的頭部加上下面的代碼:

import matplotlib.pyplot as plt
from matplotlib import style

style.use(‘fivethirtyeight‘)

Pyplot 是 matplotlib 基本的圖形化模塊. Style 幫助我們快速建立圖表. 然後可以用 Style.use 來選擇一種圖形樣式.

接下來, 我們可以這樣做:

df[‘High‘].plot()
plt.legend()
plt.show()

完整代碼如下:

import pandas as pd
import datetime
from pandas_datareader import data as web
import matplotlib.pyplot as plt
from matplotlib import style

style.use(‘ggplot‘)

start = datetime.datetime(2010, 1, 1)    
end = datetime.datetime(2015, 1, 1)

df = web.DataReader("XOM", "yahoo", start, end)

print(df.head())

df[[‘High‘]].plot()
plt.legend() #其實可以省略
plt.show()

很棒! 以上就是對 Pandas 一個簡單快速的介紹. 在這個整個系列教程中, 我將會帶到更多的Pandas 的基礎知識, 還有一些對 dataframe 的操作. 還會接觸到更多關於可視化圖形, 數據的輸入輸出形式, 初中級的數據分析和操作, 合並與組合數據等.





基於 Python 和 Pandas 的數據分析(1)