目錄
pandas 是基於NumPy 的一種工具,該工具是爲了解決數據分析任務而創建的。Pandas 納入了大量庫和一些標準的數據模型,提供了高效地操作大型數據集所需的工具。pandas提供了大量能使我們快速便捷地處理數據的函數和方法。你很快就會發現,它是使Python成爲強大而高效的數據分析環境的重要因素之一。除了用於數據挖掘和數據分析,同時也提供數據清洗功能。
pandas存在的意義就是爲用戶提供更整齊更方便的數據體驗
模塊的導入
前面說到,Pandas是基於NumPy的一種工具,所以我們在使用Pandas的同時也要導入NumPy庫。
import numpy as np
import pandas as pd
Pandas數據類型
- Series:它是一種類似於一維數組的對象,是由一組數據(各種NumPy數據類型)以及一組與之相關的數據標籤(即索引)組成。僅由一組數據也可產生簡單的Series對象。
- DataFrame:是Pandas中的一個表格型的數據結構,包含有一組有序的列,每列可以是不同的值類型(數值、字符串、布爾型等),DataFrame即有行索引也有列索引,可以被看做是由Series組成的字典。
- Panel:面板是具有異構數據的三維數據結構。在圖形表示中很難表示面板。但是一個面板可以說明爲DataFrame的容器。
Series
Series翻譯過來叫做:系列 系列是具有均勻數據的一維數組結構。
Series關鍵點: 均勻數據 、尺寸大小不變、 數據的值可變
創建一個Series:
通過pandas.Series()函數創建系列,參數是一個列表:
s = pd.Series(np.random.randn(4))
print(s)
print(type(s))
Series 基本屬性和方法:
屬性或方法 | 描述 |
axes | 返回行軸標籤列表 |
dtype | 返回對象的數據類型 |
empty | 如果系列爲空,則返回True |
ndim | 返回底層數據的維數,默認定義爲:1 |
size | 返回基礎數據中的元素數 |
values | 將系列作爲ndarray返回 |
head() | 返回前n行 |
tail() | 返回最後n行 |
s = pd.Series(np.random.randn(4))
print(s)
print(s.axes)
print(s.dtype)
print(s.empty)
print(s.size)
print(s.ndim)
print(s.values)
print(type(s.values))
s = pd.Series(np.random.randint(1,15,6))
print(s)
print("\n")
print(s.head(3))
print("\n")
print(s.tail(3))
DataFrame
數據幀(DataFrame)是二維數據結構,即數據以行和列的表格方式排列。 DataFrame是pandas使用最多,用途最廣的類型 .
數據幀(DataFrame)的功能特點:
- 潛在的列是不同的類型
- 大小可變
- 標記軸(行和列)
- 可以對行和列執行算術運算
創建一個DataFrame :
通過pandas.DataFrame()創建:
df = pd.DataFrame(np.random.randint(1,30,12).reshape(3,4))
print(df)
Dataframe的基本屬性和方法:
較Series系列多了一個轉置屬性和一個形狀屬性:
屬性或方法 | 描述 |
axes | 返回行軸標籤列表 |
dtype | 返回對象的數據類型 |
empty | 如果系列爲空,則返回True |
ndim | 返回底層數據的維數,默認定義爲:1 |
size | 返回基礎數據中的元素數 |
values | 將系列作爲ndarray返回 |
head() | 返回前n行 |
tail() | 返回最後n行 |
T | 轉置行和列 |
shape | 返回表示DateFrame的維度的元組 |
df = pd.DataFrame(np.random.randint(1,30,12).reshape(3,4))
print(df)
print(df.T)
print(df.shape)
Panel
面板(Panel)是3D容器的數據。面板數據一詞來源於計量經濟學。
3軸(axis)這個名稱旨在給出描述涉及面板數據的操作的一些語義。它們是:
- items - axis 0,每個項目對應於內部包含的數據幀(DataFrame)。
- major_axis -axis 1,它是每個數據幀(DataFrame)的索引(行)。
- minor_axis - axis 2,它是每個數據幀(DataFrame)的列。
Panel創建與基本屬性:
可以使用以下構造函數創建面板:
pandas.Panel(data, items, major_axis, minor_axis, dtype, copy)
參數說明:
參數 | 描述 |
data | 數據採取各種形式,如:ndarray,series,map,lists,dict,constant和另一個數據幀(DataFrame) |
items | axis=0 |
major_axis | axis=1 |
minor_axis | axis=2 |
dtype | 每列的數據類型 |
copy | 複製數據,默認爲:false |
Pandas的運算函數
函數 | 描述 |
count() | 非空觀測數量 |
sum() | 所有值之和 |
mean() | 所有值的平均值 |
median() | 所有值的中位數 |
mode() | 值的模值 |
std() | 值的標準偏差 |
min() | 所有值中的最小值 |
max() | 所有值中的最大值 |
abs() | 絕對值 |
prod() | 數組元素的乘積 |
cumsum() | 累計綜總和 |
cumprod() | 累計乘積 |
創建一個實例:
d={'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Minsu','Jack','Lee','David','Gasper','Betina','Andres']),
'Age':pd.Series([25,26,25,23,30,29,23,34,40,30,51,46]),
'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])}
df = pd.DataFrame(d)
print(df)
print(df.Age.sum())
print(df.Age.mean())
print(df.Rating.median())
print(df.Age.std())
print(df.Rating.max())
print(df.Rating.min())
Pandas的排序
Pandas的排序分爲兩種:一種是按標籤,一張是按實際值。
創建一個演示用的例子:
arr = np.random.randint(1,10,20).reshape(10,2)
unsorted_df=pd.DataFrame(arr,index=[1,4,6,2,3,5,9,8,0,7],columns=['col2','col1'])
print(unsorted_df)
按標籤進行排序:
使用sort_index()方法,通過傳遞axis參數和排序順序,可以對DataFrame進行排序。 默認情況下,按照升序對行標籤進行排序。
sorted_df = unsorted_df.sort_index()
print(sorted_df)
按實際值排序:
像索引排序一樣,sort_values()是按值排序的方法。它接受一個by參數,它將使用要與其排序值的DataFrame的列名稱。
sorted_df = unsorted_df.sort_values(by='col1')
print(sorted_df)
Pandas的協方差cov()和標準係數corr()
frame = pd.DataFrame(np.random.randn(10, 5), columns=['a', 'b', 'c', 'd', 'e'])
print(frame)
print ("\n a,b的協方差",frame['a'].cov(frame['b']))
print (frame.cov())
相關性顯示了任何兩個數值(系列)之間的線性關係。
frame = pd.DataFrame(np.random.randn(10, 5), columns=['a', 'b', 'c', 'd', 'e'])
print(frame)
print (frame['a'].corr(frame['b']))
print (frame.corr())