小白學 Python 數據分析(2):Pandas (一)概述


人生苦短,我用 Python

前文傳送門:

小白學 Python 數據分析(1):數據分析基礎

概覽

首先還是幾個官方鏈接放一下:

Pandas 官網:https://pandas.pydata.org/

Pandas 中文網:https://www.pypandas.cn/

Pandas Github:https://github.com/pandas-dev/pandas

先介紹一下 Pandas ,在中文網上是這么描述的:

Pandas 是 Python 的核心數據分析支持庫,提供了快速、靈活、明確的數據結構,旨在簡單、直觀地處理關系型、標記型數據。Pandas 的目標是成為 Python 數據分析實踐與實戰的必備高級工具,其長遠目標是成為最強大、最靈活、可以支持任何語言的開源數據分析工具。經過多年不懈的努力,Pandas 離這個目標已經越來越近了。

總結一下,就是 Python 數據分析離不開 Pandas , Pandas 已經上升成為 Python 的數據分析的支持庫了。

那么 Pandas 所適用的數據類型如下:

  • 與 SQL 或 Excel 表類似的,含異構列的表格數據;
  • 有序和無序(非固定頻率)的時間序列數據;
  • 帶行列標簽的矩陣數據,包括同構或異構型數據;
  • 任意其它形式的觀測、統計數據集, 數據轉入 Pandas 數據結構時不必事先標記。

Pandas 有兩種常用的數據結構,一個是 Series (一維數據),另一個是 DataFrame (二維數據)。兩種數據結構足以處理金融、統計、社會科學、工程等領域里的大多數典型用例。

那么什么是一維數據什么是二維數據呢?

簡單理解下,如果我們有一個數組,如下:

[1, 2, 3, 4, 5]

這個數組可以稱為一維數據。

那么二維數據是多個一維數據組成了一個二維數據,比如多個一維數組,如下:

[[1, 2, 3, 4, 5],
[1, 2, 3, 4, 5],
[1, 2, 3, 4, 5],
[1, 2, 3, 4, 5]]

這種數據也可以稱之為表格數據,既然是表格數據,那么就會有表頭,可以參考 Excel ,如果有數據庫使用經驗的同學可以直接參考數據庫中的表。

Pandas 是基於 Numpy 開發而成的,可以與其它第三方科學計算支持庫完美集成。

Pandas 的優勢如下:

  • 處理浮點與非浮點數據里的缺失數據,表示為 NaN
  • 大小可變:插入或刪除 DataFrame 等多維對象的列;
  • 自動、顯式數據對齊:顯式地將對象與一組標簽對齊,也可以忽略標簽,在 Series、DataFrame 計算時自動與數據對齊;
  • 強大、靈活的分組(group by)功能:拆分-應用-組合數據集,聚合、轉換數據;
  • 把 Python 和 NumPy 數據結構里不規則、不同索引的數據輕松地轉換為 DataFrame 對象;
  • 基於智能標簽,對大型數據集進行切片花式索引子集分解等操作;
  • 直觀地合並(merge)連接(join)數據集;
  • 靈活地重塑(reshape)透視(pivot)數據集;
  • 支持結構化標簽:一個刻度支持多個標簽;
  • 成熟的 IO 工具:讀取文本文件(CSV 等支持分隔符的文件)、Excel 文件、數據庫等來源的數據,利用超快的 HDF5 格式保存 / 加載數據;
  • 時間序列:支持日期范圍生成、頻率轉換、移動窗口統計、移動窗口線性回歸、日期位移等時間序列功能。

這些功能主要是為了解決其它編程語言、科研環境的痛點。處理數據一般分為幾個階段:數據整理與清洗、數據分析與建模、數據可視化與制表,Pandas 是處理數據的理想工具。

其它說明:

  • Pandas 速度很快。Pandas 的很多底層算法都用 Cython 優化過。然而,為了保持通用性,必然要犧牲一些性能,如果專注某一功能,完全可以開發出比 Pandas 更快的專用工具。
  • Pandas 是 statsmodels ( statsmodels 是 python 中處理統計學問題的重要模塊)的依賴項,因此,Pandas 也是 Python 中統計計算生態系統的重要組成部分。
  • Pandas 已廣泛應用於金融領域。

什么是 Cython ?

C 語言是編譯性語言,而 Python 則是解釋性語言,簡而言之,就是 Python 運行是逐行運行,不需要實現編譯,而 C 需要在運行前編譯。那么,可想而知,如果運行前,需要事先編譯,那么其實有一種「上帝視角」的感覺,自然可以做很多優化,讓代碼運行的更快。而 Cython 的出現就是這個目的,讓 Python 也可以被編譯,然后執行。 Cython 是一種部分包含和改變 C 語言,以及完全包含 Python 語言的一個語言集合。 Cython 是用 Python 實現的一種語言,可以用來寫 Python 擴展,用它寫出來的庫都可以通過 import 來載入,性能上比 Python 的快。 Cython 里可以載入 Python 擴展(比如 import math),也可以載入 C 的庫的頭文件(比如:cdef extern from “math.h”),另外也可以用它來寫 Python 代碼。將關鍵部分重寫成 C 擴展模塊。 Cython 中的強大之處在於可以把 Python 和 C 結合起來,它使得看起來像 Python 語言的 Cython 代碼有着和 C 相似的運行速度。

Pandas 通過這種方式保持了自己的運行速度。

安裝

Pandas 的安裝比較簡單,使用一句命令,如下:

pip install Pandas

如果看到如下顯示證明安裝成功:

Looking in indexes: https://mirrors.aliyun.com/pypi/simple/
Collecting Pandas
  Downloading https://mirrors.aliyun.com/pypi/packages/02/d0/1e8e60e61e748338e3a40e42f5dfeee63ccdecfc4f0894122b890bfb009a/pandas-0.25.3-cp37-cp37m-win_amd64.whl (9.2MB)
     |████████████████████████████████| 9.2MB 6.4MB/s
Requirement already satisfied: pytz>=2017.2 in c:\users\inwsy\appdata\local\programs\python\python37\lib\site-packages (from Pandas) (2019.2)
Collecting python-dateutil>=2.6.1
  Downloading https://mirrors.aliyun.com/pypi/packages/d4/70/d60450c3dd48ef87586924207ae8907090de0b306af2bce5d134d78615cb/python_dateutil-2.8.1-py2.py3-none-any.whl (227kB)
     |████████████████████████████████| 235kB 6.4MB/s
Collecting numpy>=1.13.3
  Downloading https://mirrors.aliyun.com/pypi/packages/a9/38/f6d6d8635d496d6b4ed5d8ca4b9f193d0edc59999c3a63779cbc38aa650f/numpy-1.18.1-cp37-cp37m-win_amd64.whl (12.8MB)
     |████████████████████████████████| 12.8MB 6.4MB/s
Requirement already satisfied: six>=1.5 in c:\users\inwsy\appdata\roaming\python\python37\site-packages (from python-dateutil>=2.6.1->Pandas) (1.12.0)
Installing collected packages: python-dateutil, numpy, Pandas
Successfully installed Pandas-0.25.3 numpy-1.18.1 python-dateutil-2.8.1

從安裝的日志中可以看到,這里並是不只安裝 Pandas ,而是順帶安裝了 Numpy 和 Python-Dateutil ,因為這兩個庫是 Pandas 的依賴庫,實際上, Pandas 的依賴庫不止這兩個,官方推薦的依賴庫具體如下:

Package 最低支持版本
setuptools 24.2.0
NumPy 1.13.3
python-dateutil 2.6.1
pytz 2017.2

這里要注意一點,官方強烈建議我們安裝這些庫,因為這些庫可以提高處理速度,尤其是在處理大型數據集時。

Pandas 還有許多可選的依賴庫,僅用於特定的方法。例如,pandas.read_hdf() 需要pytables包。 如果未安裝可選依賴項,則在調用需要該依賴項的方法時,pandas將引發ImportError

依賴名稱 最低版本 注意
BeautifulSoup4 4.6.0 HTML parser for read_html (see note)
Jinja2 Conditional formatting with DataFrame.style
PyQt4 Clipboard I/O
PyQt5 Clipboard I/O
PyTables 3.4.2 HDF5-based reading / writing
SQLAlchemy 1.1.4 SQL support for databases other than sqlite
SciPy 0.19.0 Miscellaneous statistical functions
XLsxWriter 0.9.8 Excel writing
blosc Compression for msgpack
fastparquet 0.2.1 Parquet reading / writing
gcsfs 0.2.2 Google Cloud Storage access
html5lib HTML parser for read_html (see note)
lxml 3.8.0 HTML parser for read_html (see note)
matplotlib 2.2.2 Visualization
openpyxl 2.4.8 Reading / writing for xlsx files
pandas-gbq 0.8.0 Google Big Query access
psycopg2 PostgreSQL engine for sqlalchemy
pyarrow 0.9.0 Parquet and feather reading / writing
pymysql 0.7.11 MySQL engine for sqlalchemy
pyreadstat SPSS files (.sav) reading
pytables 3.4.2 HDF5 reading / writing
qtpy Clipboard I/O
s3fs 0.0.8 Amazon S3 access
xarray 0.8.2 pandas-like API for N-dimensional data
xclip Clipboard I/O on linux
xlrd 1.1.0 Excel reading
xlwt 1.2.0 Excel writing
xsel Clipboard I/O on linux
zlib Compression for msgpack

參考

https://blog.csdn.net/mou_it/article/details/81876879

https://www.pypandas.cn/docs/installation.html

https://www.pypandas.cn/docs/getting_started/overview.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM