日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pandas基础(part2)--DataFrame

發布時間:2023/12/19 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pandas基础(part2)--DataFrame 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學習筆記,這個筆記以例子為主。
開發工具:Spyder


文章目錄

    • 數據框DateFrame
    • 數據結構操作(舉例)
      • 列訪問
      • 列添加
      • 列刪除
      • 行訪問
      • 行添加
      • 行刪除
      • 修改DataFrame中的數據
      • DataFrame常用屬性


數據框DateFrame

DataFrame是一個類似于表格的數據類型,可以理解為一個二維數組,索引有兩個維度,可更改。

  • DataFrame的特點

①列可以是不同的類型
②大小可變
③標記軸(行和列)
④可以對行和列執行算術運算

  • 語法
import numpy as np import pandas as pd#創建一個空的DataFrame對象 df = pd.DataFrame()#從列表創建DataFrame data = [['A', 9], ['B', 12], ['C', 15]] df = pd.DataFrame(data)#從字典創建DataFrame data = [{'A':1, 'B':2}, {'A':3, 'B':4, 'C':5}] df = pd.DataFrame(data)
  • 例子1(列表構造方式)

代碼1:

import numpy as np import pandas as pd#從列表創建DataFrame data = [['Ada', 9], ['Black', 12], ['Jack', 15]] df = pd.DataFrame(data) print(df)

結果1:

0 1 0 Ada 9 1 Black 12 2 Jack 15

代碼2(設置列名):

data = [['Ada', 9], ['Black', 12], ['Jack', 15]] df = pd.DataFrame(data, columns = ['name', 'age']) print(df) print('-'*10) print(df.dtypes)

結果2:

name age 0 Ada 9 1 Black 12 2 Jack 15 ---------- name object age int64 dtype: object

代碼3(設置數據類型):

data = [['Ada', 9], ['Black', 12], ['Jack', 15]] df = pd.DataFrame(data, columns = ['name', 'age'],dtype = float) print(df) print('-'*10) print(df.dtypes)

結果3:

name age 0 Ada 9.0 1 Black 12.0 2 Jack 15.0 ---------- name object age float64 dtype: object
  • 例子2(字典構造方式)

代碼1:

import pandas as pddata = {'name':['Ada', 'Tom','Black', 'Jack'],'age':[9, 19, 12, 15]}df = pd.DataFrame(data) print(df)

結果1:

age name 0 9 Ada 1 19 Tom 2 12 Black 3 15 Jack

備注:字典無序,所以構成dataframe類型時,列會自動的按照列名的首字母排序

代碼2(設置行名):

df = pd.DataFrame(data, index = ['A', 'B', 'C', 'D']) print(df)

結果2:

age name A 9 Ada B 19 Tom C 12 Black D 15 Jack

代碼3:

df = pd.DataFrame(data, index = pd.date_range('2020-01-01', periods = 4)) print(df)

結果3:

age name 2020-01-01 9 Ada 2020-01-02 19 Tom 2020-01-03 12 Black 2020-01-04 15 Jack
  • 例子3(字典的其他構造方式)

代碼1:

import pandas as pddata = [{'A':1, 'B':2}, {'A':3, 'B':4, 'C':5}] df = pd.DataFrame(data) print(df)

結果1:

A B C 0 1 2 NaN 1 3 4 5.0

代碼2:

import pandas as pddata = {'A':pd.Series([1, 2, 3], index = ['one', 'two', 'three']),'B':pd.Series([1, 2, 3, 4], index = ['one', 'two', 'three', 'four'])} df = pd.DataFrame(data) print(df)

結果2:

A B four NaN 4 one 1.0 1 three 3.0 3 two 2.0 2

數據結構操作(舉例)

列訪問

DataFrame的單列數據為一個Series。根據DataFrame的定義可以知曉DataFrame是一個帶有標簽的二維數組,每個標簽相當每一列的列名。

  • 例子

①訪問單列

代碼:

import pandas as pddata = {'A':pd.Series([1, 2, 3], index = ['one', 'two', 'three']),'B':pd.Series([1, 2, 3, 4], index = ['one', 'two', 'three', 'four']),'C':pd.Series([6, 7, 8, 9], index = ['one', 'two', 'three', 'four'])} df = pd.DataFrame(data) #print('-'*10) print(df['A'], '\n',type(df['A']))

結果:

four NaN one 1.0 three 3.0 two 2.0 Name: A, dtype: float64 <class 'pandas.core.series.Series'>

②訪問多列

代碼:

import pandas as pddata = {'A':pd.Series([1, 2, 3], index = ['one', 'two', 'three']),'B':pd.Series([1, 2, 3, 4], index = ['one', 'two', 'three', 'four']),'C':pd.Series([6, 7, 8, 9], index = ['one', 'two', 'three', 'four'])} df = pd.DataFrame(data)print(df[['C', 'B']])

結果:

C B four 9 4 one 6 1 three 8 3 two 7 2

列添加

DataFrame添加一列的方法非常簡單,只需要新建一個列索引。并對該索引下的數據進行賦值操作即可。

  • 例子

代碼:

import pandas as pddata = {'name':['Ada', 'Tom','Black', 'Jack'],'age':[9, 19, 12, 15]}df = pd.DataFrame(data, index = ['a1', 'a2', 'a3', 'a4']) df['weight'] = pd.Series([8, 4, 5, 6], index = ['a1', 'a2', 'a3', 'a4'])print(df)

結果:

age name weight a1 9 Ada 8 a2 19 Tom 4 a3 12 Black 5 a4 15 Jack 6

列刪除

刪除某列數據需要用到pandas提供的方法pop()。

  • 例子

代碼:

import pandas as pddata = {'name':['Ada', 'Tom','Black', 'Jack'],'age':[9, 19, 12, 15],'weight':[8, 4, 5, 6],'hight':[20, 35, 30, 33]}df = pd.DataFrame(data, index = ['a1', 'a2', 'a3', 'a4'])print(df) print('-'*20)#del 方法,刪除一列 del(df['weight']) print(df) print('-'*20)#pop方法,刪除一列 df.pop('hight') print(df)

結果:

age hight name weight a1 9 20 Ada 8 a2 19 35 Tom 4 a3 12 30 Black 5 a4 15 33 Jack 6 --------------------age hight name a1 9 20 Ada a2 19 35 Tom a3 12 30 Black a4 15 33 Jack --------------------age name a1 9 Ada a2 19 Tom a3 12 Black a4 15 Jack

行訪問

  • 例子1(切片:)

代碼:

import pandas as pddata = {'name':['Ada', 'Tom','Black', 'Jack'],'age':[9, 19, 12, 15],'weight':[8, 4, 5, 6],'hight':[20, 35, 30, 33]}df = pd.DataFrame(data, index = ['a1', 'a2', 'a3', 'a4'])print(df) print('-'*20) print(df[1:3])

結果:

age hight name weight a1 9 20 Ada 8 a2 19 35 Tom 4 a3 12 30 Black 5 a4 15 33 Jack 6 --------------------age hight name weight a2 19 35 Tom 4 a3 12 30 Black 5
  • 例子2(loc方法)

loc方法是針對DataFrame索引名稱的切片方法,在下面的例子中,我們演示一下loc方法的使用。

代碼:

import pandas as pddata = {'name':['Ada', 'Tom','Black', 'Jack'],'age':[9, 19, 12, 15],'weight':[8, 4, 5, 6],'hight':[20, 35, 30, 33]}df = pd.DataFrame(data, index = ['a1', 'a2', 'a3', 'a4'])print(df) print('-'*20) print(df.loc['a2'], '\n',type(df.loc['a2'])) print('-'*20) print(df.loc[['a1', 'a3']])

結果:

age hight name weight a1 9 20 Ada 8 a2 19 35 Tom 4 a3 12 30 Black 5 a4 15 33 Jack 6 -------------------- age 19 hight 35 name Tom weight 4 Name: a2, dtype: object <class 'pandas.core.series.Series'> --------------------age hight name weight a1 9 20 Ada 8 a3 12 30 Black 5

備注:只獲取一行,則拿到的是Series。

  • 例子3(iloc方法)

iloc方法和loc區別是iloc接受的必須是行索引和列索引的下標,在下面的例子中,我們演示一下loc方法的使用。

代碼:

import pandas as pddata = {'name':['Ada', 'Tom','Black', 'Jack'],'age':[9, 19, 12, 15],'weight':[8, 4, 5, 6],'hight':[20, 35, 30, 33]}df = pd.DataFrame(data, index = ['a1', 'a2', 'a3', 'a4'])print(df.iloc[2]) print('-'*20) print(df.iloc[[1, 3]])

結果:

age 12 hight 30 name Black weight 5 Name: a3, dtype: object --------------------age hight name weight a2 19 35 Tom 4 a4 15 33 Jack 6

行添加

  • 例子

代碼:

import pandas as pddf1 = pd.DataFrame([['Huang', 7], ['Bai', 8]],columns = ['name', 'age'])df2 = pd.DataFrame([['Bunny', 5], ['Tim', 9]],columns = ['name', 'age'])print(df1) print('-'*15) df = df1.append(df2) print(df) print('-'*15) print(df.loc[0])

結果:

name age 0 Huang 7 1 Bai 8 ---------------name age 0 Huang 7 1 Bai 8 0 Bunny 5 1 Tim 9 ---------------name age 0 Huang 7 0 Bunny 5

由結果可知,進行行添加后,行標會出現重復的狀況,如果按照行標進行行查詢,則可能會找到多行數據。我們可以重建索引,解決索引重復問題。

行刪除

使用索引標簽從DataFrame中刪除或者刪除行。如果標簽重復,則會刪除多行。

  • 例子

代碼:

import pandas as pddf1 = pd.DataFrame([['Huang', 7], ['Bai', 8]],columns = ['name', 'age'])df2 = pd.DataFrame([['Bunny', 5], ['Tim', 9]],columns = ['name', 'age'])df = df1.append(df2) print(df) print('-'*15) #刪除index為1的行 df = df.drop(1) print(df)

結果:

name age 0 Huang 7 1 Bai 8 0 Bunny 5 1 Tim 9 ---------------name age 0 Huang 7 0 Bunny 5

修改DataFrame中的數據

更改DataFrame中的數據,原理是將要修改的這部分數據提取出來,重新賦值為新的數據.

  • 例子

代碼:

import pandas as pddf = pd.DataFrame([['Huang', 7], ['Bai', 8],['Black', 9]],columns = ['name', 'age'])print(df) print('-'*15)df['name'][2] = 'Tim' print(df)

備注:df["Name"][2]是先拿到name列(Series類型),再拿到第3行。

結果:

name age 0 Huang 7 1 Bai 8 2 Black 9 ---------------name age 0 Huang 7 1 Bai 8 2 Tim 9

DataFrame常用屬性

編號屬性或方法描述
1axes返回 行/列 標簽(index)列表。
2dtype返回對象的數據類型(dtype)。
3empty如果Series為空,則返回True。
4ndim返回底層數據的維數,默認定義:1。
5size返回基礎數據中的元素數。
6values將系列作為ndarray返回。
7head()返回前n行。
8tail()返回最后n行。
  • 例子

代碼:

import pandas as pddata = {'name':['Ada', 'Tom','Black', 'Jack'],'age':[9, 19, 12, 15],'weight':[8, 4, 5, 6],'hight':[20, 35, 30, 33]}df = pd.DataFrame(data, index = ['a1', 'a2', 'a3', 'a4'])print(df, '\n') print(df.axes, '\n') print(df['age'].dtype, '\n') print(df.empty, '\n') print(df.ndim, '\n') print(df.size, '\n') print(df.values, '\n') print(df.head(3), '\n') # df的前三行 print(df.tail(3), '\n') # df的后三行

結果:

age hight name weight a1 9 20 Ada 8 a2 19 35 Tom 4 a3 12 30 Black 5 a4 15 33 Jack 6 [Index(['a1', 'a2', 'a3', 'a4'], dtype='object'), Index(['age', 'hight', 'name', 'weight'], dtype='object')] int64 False 2 16 [[9 20 'Ada' 8][19 35 'Tom' 4][12 30 'Black' 5][15 33 'Jack' 6]] age hight name weight a1 9 20 Ada 8 a2 19 35 Tom 4 a3 12 30 Black 5 age hight name weight a2 19 35 Tom 4 a3 12 30 Black 5 a4 15 33 Jack 6
  • 例子2(describe)

代碼1:

import pandas as pddata = {'name':['Ada', 'Tom','Black', 'Jack', 'Bai'],'age':[9, 19, 12, 15, 10],'weight':[8, 4, 5, 6, 7],'hight':[20, 35, 30, 33, 28]}df = pd.DataFrame(data, index = ['a1', 'a2', 'a3', 'a4', 'a5'])print(df.describe())

結果1:

age hight weight count 5.000000 5.00000 5.000000 mean 13.000000 29.20000 6.000000 std 4.062019 5.80517 1.581139 min 9.000000 20.00000 4.000000 25% 10.000000 28.00000 5.000000 50% 12.000000 30.00000 6.000000 75% 15.000000 33.00000 7.000000 max 19.000000 35.00000 8.000000

由結果可知,df.describe()將數值型數據的統計量計算出來了。

代碼2:

print(df.describe(include = ['object']))

結果2:

name count 5 unique 5 top Jack freq 1

由結果可知,df.describe(include = [“object”])是對分類型(這里不是很確定,標記一下) 的數據進行描述性統計分析。

代碼3:

print(df.describe(include = ['number']))

結果3:

age hight weight count 5.000000 5.00000 5.000000 mean 13.000000 29.20000 6.000000 std 4.062019 5.80517 1.581139 min 9.000000 20.00000 4.000000 25% 10.000000 28.00000 5.000000 50% 12.000000 30.00000 6.000000 75% 15.000000 33.00000 7.000000 max 19.000000 35.00000 8.000000

由結果可知df.describe(include = [“number”])是對數值型的數據進行描述性統計分析,上述結果與結果1相同。

代碼4:

print(df.describe(include = ['number', 'object']))

結果4:

age hight name weight count 5.000000 5.00000 5 5.000000 unique NaN NaN 5 NaN top NaN NaN Bai NaN freq NaN NaN 1 NaN mean 13.000000 29.20000 NaN 6.000000 std 4.062019 5.80517 NaN 1.581139 min 9.000000 20.00000 NaN 4.000000 25% 10.000000 28.00000 NaN 5.000000 50% 12.000000 30.00000 NaN 6.000000 75% 15.000000 33.00000 NaN 7.000000 max 19.000000 35.00000 NaN 8.000000

結果4基本上可以說,是結果2和結果3的堆疊。

總結

以上是生活随笔為你收集整理的pandas基础(part2)--DataFrame的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。