Pandas的基礎操作:介紹/創建/查看數據/賦值/刪除/常用函數接口

剛剛使用Python學習進行數據分析,分享一些概念和想法,希望可以大家一起討論,如果理解或者表達有不準確的地方,請多多指點,不吝賜教,非常感謝~~

Pandas是一個第三方庫,主要功能是提供了 DataFrame這個數據結構,它可以讓我們直接在數據集上使用關係模型,比如分組(group by),聚合(agg)或者聯合(join)等操作。它是基於Numpy的數據分析庫。本文將分別介紹Series和DataFrame兩種數據結構的基本操作。

1. 什麼是Series和DataFrame

Series是Pandas提供的一種基礎數據類型,也是一個序列類型,它的大部分操作與Numpy的ndarray操作類型;同時也是一個索引類型,可以像Python中的字典一樣操作。但是和ndarray一樣,是隻能包含同一種類型元素的序列,與Python中的 list和字典不一樣。每個Series對象都有index和values組成:index是從Numpy繼承的index對象,保存標籤信息;values保存值(如上所述,index也可以被看成標籤 key)

DataFrame是一個將數據存儲爲行和列的對象。可以將DataFrame視爲電子表格或SQL表格。它的每列都有一個名稱,是一個字符串;每行都有一個索引,是一個整數。DataFrames可以包含許多不同的數據類型:字符串,整數,浮點數,元組等。

2. 創建

  • 創建Series

(1)直接創建:pd.Series([1,0.3,np.nan])
(2)從Python的list中創建:pd.Series(list([1,0.3,np.nan]))
(3)從Numpy的ndarray中創建:pd.Series(np.array([1,0.3,np.nan]))
在這裏插入圖片描述
我們能看到打印Series的時候,第一列有一個序列號,這就是Series的索引部分。如果我們不自定義索引,系統會生成自增的鍵,如圖示。

(4)自定義索引:pd.Series([1,0.3,np.nan] , index = ["a","b","c"])
在這裏插入圖片描述
(5)從Python的字典創建:pd.Series({"a":1 , "b":0.3 , "c":np.nan}) 直接定義了索引

  • 創建DataFrame

(1)使用dictionary添加Dataframe:key爲Dataframe中的列名;value爲Dataframe中列名下對應的列數據(要求value個數一致)

df1 = pd.DataFrame({
    'name': ['John Smith', 'Jane Doe', 'Joe Schmo'],
    'address': ['123 Main St.', '456 Maple Ave.', '789 Broadway'],
    'age': [34, 28, 51]
})

(2)使用 list of lists 添加Dataframe:每個列表代表一行數據;可以使用關鍵字columns定義列名(如果不定義會和 index一樣,系統自動生成一個自增序列)

df2 = pd.DataFrame([
    ['John Smith', '123 Main St.', 34],
    ['Jane Doe', '456 Maple Ave.', 28],
    ['Joe Schmo', '789 Broadway', 51]
    ],
    columns=['name', 'address', 'age'])

在這裏插入圖片描述
(3)從Numpy的ndarray中創建:pd.DataFrame(np.random.randn(5,4), columns=list("aasd"))
在這裏插入圖片描述
(4)從csv文件加載數據:pd.read_csv(" dir ", index_col=n)

通常使用是在對dataframe操作之後,數據中有一個列沒有實際的效用,生成出來的0123456的序列,即列Unnamed:0,如果這個時候不使用它作爲index就會出現:
在這裏插入圖片描述
index_col參數的含義是:將index=n的列作爲索引

data=pd.read_csv("/Users/MachineLearning/03_Preprocessing:Dimensionality_reduction/Narrativedata.csv",index_col=0)

在這裏插入圖片描述

3. 查看數據

以下列數據爲例:

data = pd.DataFrame(np.random.randn(6,4),columns=list('ABCD'))
  • 查看數據維度信息:data.shape
    在這裏插入圖片描述
  • 查看每列數據的統計信息:data.info()
    在這裏插入圖片描述
  • 查看每列數據的數據類型:data.dtypes
    在這裏插入圖片描述
  • 輸出行索引:data.index
    在這裏插入圖片描述
  • 輸出列索引:data.columns
    在這裏插入圖片描述
  • 查看數據:datadata.head(n)
    在這裏插入圖片描述
  • 查看數據的值:data.values
    在這裏插入圖片描述
  • 選擇行數據:

(1)選擇一行數據data.loc[index]data.iloc[index]
在這裏插入圖片描述
(2)選擇多行數據:

a. data.loc[2:4]
在這裏插入圖片描述
b. data.iloc[2:4]data[2:4]
在這裏插入圖片描述

.loc[k]是讀取dataframe中index爲k的那一行
.iloc[k]是讀取dataframe中的第k行
  • 選擇列數據:

(1)選擇某一列data.Bdata["B"]data.loc[ :, "B"]data.iloc[ :, 1]
在這裏插入圖片描述
(2)選擇多列data[['A','B']]data.loc[ :, ["A","B"]]data.iloc[:,[ 0,1]]data.iloc[:,[ 0:2]]
在這裏插入圖片描述

  • 選擇滿足條件的數據:

(1)邏輯判斷所有元素data[data>0]
在這裏插入圖片描述
(2)使用列邏輯判斷,展示將滿足條件的所有行數據data[data.A>0]
在這裏插入圖片描述
(3)滿足某列中值爲x的所有行數據data[data.target.isin(["1","0"])]

** (以“賦值”操作之後的數據爲例)
在這裏插入圖片描述

4. 賦值

(1)複製數據:data.cope()
(2)給某個元素賦值:data.iat[0,0] = 100
(3)給某列中的某幾個元素賦值:data.loc[data.index[1:3],'C'] = 200
(4)新增一列:data["target"]=np.random.randint(0,3,size=6)
(5)給某列賦值:data.B=200data["B"]=200data.loc[:,["B","D"]]=150data.iloc[:,[1,3]]=150

在這裏插入圖片描述
(6)給某列的索引名重新賦值:data.rename(columns={'target':'TAG'})
(7)給全部列的索引重命名:data.columns=["a","b","c","d","e","f"]
(8)給全部行索引重命名:data.index=["a","b","c","d","e","f"]
(9)新增一行:data.append(data_series, ignore_index = True)
(10)爲NaN元素賦值:data.fillna(n)

5. 刪除

  • 刪除有空值的行或列:data.dropna(axis=0, inplace=False)
  • 刪除某行或某列:data.drop(labels=None,axis=0, index=None, columns=None, inplace=False)

使用數據:

data = pd.DataFrame(np.random.randn(6,4),columns=list('ABCD'))

(1)刪除列:使用label+axis參數或者直接使用columns參數

data.drop(["A","C"],axis=1)
# or
data.drop(columns=["A","C"])

在這裏插入圖片描述
(2)刪除行:直接使用index參數

data.drop(index=[2,5])

在這裏插入圖片描述

6.常用函數

常用接口 參數 返回值 說明
1 data.mean() axis=0/1默認值爲0 Series 平均值
2 data.std() axis=0/1默認值爲0 Series 求每的標準差
3 data.median() axis=0/1默認值爲0 Series 求每的中位數
4 data.min() axis=0/1默認值爲0 Series 求每的最小值
5 data.max() axis=0/1默認值爲0 Series 求每的最大值
6 data.sum() axis=0/1默認值爲0 DataFrame/Series 對每求和
7 data.cumsum() axis=0/1默認值爲0 DataFrame/Series 對每進行累加
8 data.nunique() axis=0/1默認值爲0 int/Series 統計Series中不同值的個數/統計DataFrame中每中幾個不同值
9 data_series.mode() Series 常用在返回對Series中出現最多的元素
10 data_series.unique() ndarray 只能用在統計Series中存在的不重複元素
11 data_series.value_counts() Series 只能用在統計Series中每個元素出現的次數
12 pd.isnull(data) 要被判斷的Series或者Dataframe bool類型的Series/DataFrame 判斷Series或者Dataframe中每個元素是否爲NaN
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章