pandas簡介

pandas 是一種列存數據分析 API。

導入了 pandas API 並輸出了相應的 API 版本:
import pandas as pd

pd.__version__

pandas 中的主要數據結構被實現爲以下兩類:
DataFrame,您可以將它想象成一個關係型數據表格,其中包含多個行和已命名的列。
Series,它是單一列。DataFrame 中包含一個或多個 Series,每個 Series 均有一個名稱。

數據框架是用於數據操控的一種常用抽象實現形式。Spark 和 R 中也有類似的實現。

創建 Series:

pd.Series(['San Francisco', 'San Jose', 'Sacramento'])

您可以將映射 string 列名稱的 dict 傳遞到它們各自的 Series,從而創建DataFrame對象。如果 Series 在長度上不一致,系統會用特殊的 NA/NaN 值填充缺失的值。
city_names = pd.Series(['San Francisco', 'San Jose', 'Sacramento'])
population = pd.Series([852469, 1015785, 485199])

pd.DataFrame({ 'City name': city_names, 'Population': population })

但是在大多數情況下,您需要將整個文件加載到 DataFrame 中。下面的示例加載了一個包含加利福尼亞州住房數據的文件。
california_housing_dataframe=pd.read_csv("https://storage.googleapis.com/mledu-datasets/california_housing_train.csv", sep=",")
california_housing_dataframe.describe()

上面的示例使用 DataFrame.describe 來顯示關於 DataFrame 的有趣統計信息。另一個實用函數是 DataFrame.head,它顯示 DataFrame 的前幾個記錄:

pandas 的另一個強大功能是繪製圖表。例如,藉助 DataFrame.hist,您可以快速瞭解一個列中值的分佈:

可以使用熟悉的 Python dict/list 指令訪問 DataFrame 數據:

cities = pd.DataFrame({ 'City name': city_names, 'Population': population })
print type(cities['City name'])

cities['City name']

print type(cities['City name'][1])
cities['City name'][1]

print type(cities[0:2])

cities[0:2]


可以向 Series 應用 Python 的基本運算指令:population / 1000.

NumPy 是一種用於進行科學計算的常用工具包。pandas Series 可用作大多數 NumPy 函數的參數:
import numpy as np
np.log(population)

對於更復雜的單列轉換,您可以使用 Series.apply。像 Python 映射函數一樣,Series.apply 將以參數形式接受 lambda 函數,而該函數會應用於每個值。
下面的示例創建了一個指明 population 是否超過 100 萬的新 Series:
population.apply(lambda val: val > 1000000)

DataFrames 的修改方式也非常簡單。例如,以下代碼向現有 DataFrame 添加了兩個 Series:
cities['Area square miles'] = pd.Series([46.87, 176.53, 97.92])
cities['Population density'] = cities['Population'] / cities['Area square miles']

cities


Series 和 DataFrame 對象也定義了 index 屬性,該屬性會向每個 Series 項或 DataFrame 行賦一個標識符值。
默認情況下,在構造時,pandas 會賦可反映源數據順序的索引值。索引值在創建後是穩定的;也就是說,它們不會因爲數據重新排序而發生改變。

調用 DataFrame.reindex 以手動重新排列各行的順序。例如,以下方式與按城市名稱排序具有相同的效果:
cities.reindex([2, 0, 1])

重建索引是一種隨機排列 DataFrame 的絕佳方式。在下面的示例中,我們會取用類似數組的索引,然後將其傳遞至 NumPy 的 random.permutation 函數,該函數會隨機排列其值的位置。如果使用此重新隨機排列的數組調用 reindex,會導致 DataFrame 行以同樣的方式隨機排列。 

cities.reindex(np.random.permutation(cities.index))

reindex 方法允許使用未包含在原始 DataFrame 索引值中的索引值。
如果您的 reindex 輸入數組包含原始 DataFrame 索引值中沒有的值,reindex 會爲此類“丟失的”索引添加新行,並在所有對應列中填充 NaN 值:
cities.reindex([0, 4, 5, 2])


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章