基於 Python 和 Pandas 的數據分析(1)
基於 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)