Pandas 是一個 Python 的包,提供快速、靈活和富有表現力的數據結構,旨在使“關係”或“標記”數據的使用既簡單又直觀。它的目標是成爲用Python進行實際的、真實的數據分析的基礎高級模塊。
對於沒有經驗的新手朋友來說,安裝Pandas以及其餘的NumPy和SciPy等工具包可能會有點困難。
最簡單的方法不是直接安裝Pandas,而是安裝Python和構成SciPy數據科學技術棧的最流行的工具包(IPython,NumPy,Matplotlib,…)的集合Anaconda,它是一個跨平臺(Linux,Mac OS X,Windows)的Python發行版,用於數據分析和科學計算。
本人就是小白,所以直接使用安裝Anaconda的方式了。
Pandas 建立在NumPy之上,旨在與許多其他第三方庫完美地集成在科學計算環境中。
以下是 pandas 做夠勝任的一些事情:
- 在浮點和非浮點數據中輕鬆處理缺失數據(表示爲NaN)
- 大小可變性:可以從DataFrame和更高維度的對象中插入和刪除
- 自動和顯式數據對齊:對象可以明確地與一組標籤對齊,或者用戶可以簡單地忽略標籤,讓Series,DataFrame等在計算中自動對齊數據
- 強大,靈活的組(group by)功能,可對數據集執行拆分應用組合操作,用於聚合和轉換數據
- 輕鬆將其他Python和NumPy數據結構中的不規則,不同索引數據轉換爲DataFrame對象
- 基於智能標籤的切片,花式索引和子集大數據集
- 直觀合併和加入數據集
- 靈活的重塑和數據集的旋轉
- 軸的分層標記(每個刻度可能有多個標籤)
- 強大的IO工具,用於從平面文件(CSV和分隔)、Excel文件、數據庫以及能從超快的HDF5格式中保存或加載數據
- 特定時間序列功能:日期範圍生成和頻率轉換、移動窗口統計、移動窗口線性迴歸、日期轉換和滯後等
Pandas中主要有Series和DataFrame兩種數據結構。
1 Series 可以看做有標籤(默認是整數序列RangeIndex;可以重複)的一維數組(同類型)。是scalars的集合,同時也是DataFrame的元素。
2 DataFrame 一般是二維標籤,尺寸可變的表格結構,具有潛在的異質型列。
Series
我們可以稱之爲序列,它主要是用來存儲一行或者一列的數據,以及與其相關的索引集合。想必換個不專業的說法大家就很清楚了:一維數組。
語法:
Series([數據…], index=[索引…])
Series的索引是可以省略的,如果我們省略索引,那麼索引號默認從0開始遞增。當然了,我們也可以指定索引名,不限於使用整數,字符串也是可以的。
使用list或者索引來構建Series,看個例子:
使用dict來構建Series,看個例子:
Series數據訪問可以通過以下方式獲取:
1.通過索引訪問元素(索引不能越界)
2.如果使用dict構建的,可以通過鍵值來訪問:
注意:通過dict構建的Series,其實也可通過默認從0開始的索引進行訪問的。
如果不存在的鍵值作爲索引,會報錯:
如果使用索引越界訪問:
這裏是使用dict構建的Series,所以會有兩個錯誤,第一個會提示鍵值錯誤,第二個纔是索引越界。
3.通過切片進行數據訪問(切片的概念在寫python相關的文章有過介紹)
- 定位獲取,也就是獲取多個數據,通常用於隨機抽樣
5.通過條件獲取數據
如何向Series數據追加元素呢?我們可以使用append方法來實現。
看個例子:
乍一看好像沒什麼問題啊,運行後才發現又出錯了:
哦,原來問題是出在Series不能追加單個元素,但是能夠追加序列啊。
到這裏,我們的使用姿勢對了,可細心的朋友估計發現了,series_exam1的值怎麼沒有改變呢?
append方法返回的是一個新的序列,我們需要一個變量來接收這個變化,也就是需要對series_exam1進行賦值。
結果沒有問題,series_exam1的值是我們預期的結果,可是索引好像不對啊。。。如果大家介意的話,自己的手動設置下索引了。
刪除元素:
- 通過索引刪除,同append方法返回的是一個新的序列
另外一種使用姿勢,我們自定義了索引名稱的時候:
這裏首先通過索引找到對應的索引名稱然後進行刪除。。。看起來好像沒有什麼用處啊,有沒有?
- 根據選擇條件進行值刪除(返回新的序列)
另外我們還可以通過sort_index和reindex方法對Series的索引進行排序。
sort_index默認是升序的,此時參數不用填寫,這裏爲了演示而已。
當然了,還有好多知識點了,這裏就先說這些了。