Pandas 學習 第4篇:DataFrame -(創建、屬性、操作列、類型轉換)


數據框類似於二維的關系表,包含一組有序的列,列與列之間的數據類型可以是不同的,但是單個列的數據類型是相同的。數據框的每一列或每一行都可以認為是一個Series。DataFrame中面向行和面向列的操作基本上是相同的,把行和列稱作軸(axis),DataFrame是按照軸進行操作的,axis=0表示行軸;axis=1 表示列軸。

DataFrame對象既有行索引(index),也有列索引(columns),行索引也叫做行標簽,列索引也叫做列標簽/列名。在DataFrame的構造函數中,columns參數用於設置列索引,index用於設置行索引,都屬於Index類型。Index對象既可以使用位置(整數)來表示,也可以使用標簽(字符串)來表示,位置的起始值是0,標簽是通過列表來指定的。

一,數據框構造函數

數據框的基礎構造函數是DataFrame,從array-like的結構中構造數據框:

pandas.DataFrame(data=None, index=None, columns=None)

參數注釋:

  • data:ndarray、list 或dict
  • index:行索引
  • columns:列名列表

除了基礎構造函數之外,還有 DataFrame.from_records 和 DataFrame.from_dict,專門用於從元組 和 字典中創建數據框。

二,創建數據框

通常情況下,我們使用pd.DataFrame()函數來創建數據框,當然也可以根據需要使用pd.DataFrame.from_dict()函數來創建數據框。

1,使用字典來創建數據框

通過等長的字典來創建數據框,並可以設置數據框的列名和行索引。字典存儲的是每列的數據:

>>> data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'],
...     'year': [2000, 2001, 2002, 2001, 2002],
...     'pop': [1.5, 1.7, 3.6, 2.4, 2.9]}
>>> row_index = ['one', 'two', 'three', 'four', 'five']
>>> col_names=['year', 'state', 'pop']
>>> df=pd.DataFrame(data,columns=col_names,index=row_index)
       year   state  pop
one    2000    Ohio  1.5
two    2001    Ohio  1.7
three  2002    Ohio  3.6
four   2001  Nevada  2.4
five   2002  Nevada  2.9

2,使用列表(列表項是List)來創建數據框

列表項是列表,把該列表轉換為DataFrame:

students = [ ['jack', 34, 'Sydeny'] ,
             ['Riti', 30, 'Delhi' ] ,
             ['Aadi', 16, 'New York'] ]
df = pd.DataFrame(students) 

3,使用列表(列表項是元組)來創建數據框

列表項是元組,把該列表轉換為DataFrame:

students = [ ('jack', 34, 'Sydeny') ,
             ('Riti', 30, 'Delhi' ) ,
             ('Aadi', 16, 'New York') ]
df = pd.DataFrame(students) 

4,使用from_dict創建數據框

data是一個字典結構,字典的Key是列名,Value是一個列表,通過這種格式創建數據框:

>>> data = {'col_1': [3, 2, 1, 0], 'col_2': ['a', 'b', 'c', 'd']}
>>> pd.DataFrame.from_dict(data)
   col_1 col_2
0      3     a
1      2     b
2      1     c
3      0     d

三,數據框的屬性

數據框的屬性主要是索引、列名、數據類型和值,對於一下數據框

1,數據框的索引

通過index屬性來訪問數據框的行標簽,通過columns屬性訪問數據框的列標簽:

>>> df.index
Index(['one', 'two', 'three', 'four', 'five'], dtype='object')
>>> df.columns
Index(['year', 'state', 'pop'], dtype='object')

2,數據類型

查看數據框各列的數據類型

>>> df.dtypes
year       int64
state     object
pop      float64
dtype: object

查看數據框中某一列的數據類型:

df['col_name'].dtypes
df.col_name.dtypes

3,數據框的值

values屬性以Numpy數組形式顯示數據框的值:

>>> df.values
array([[2000, 'Ohio', 1.5],
       [2001, 'Ohio', 1.7],
       [2002, 'Ohio', 3.6],
       [2001, 'Nevada', 2.4],
       [2002, 'Nevada', 2.9]], dtype=object)

4,數據框的軸和形狀

>>> df.axes
[Index(['one', 'two', 'three', 'four', 'five'], dtype='object'), Index(['year', 'state', 'pop'], dtype='object')]
>>> df.shape
(5, 3)

四,列操作和行操作

追加列

通過為一個新列賦值來向數據框中追加新列,新列始終處於列名序列的末尾:

>>> df['new']='a'

插入列 

要制定新列的位置,需要使用insert()函數,該函數向數據框中插入一列,並制定新列的位置:

DataFrame.insert(self, loc, column, value)

參數注釋:

  • loc:插入列的位置,該位置索引必須0 <= loc <= len(columns)
  • column:插入列的名稱
  • value:插入列的值,可以是單個標量值,插入列的值都是相同的;可以是序列或array-like,為每一行的列設置一個值。

舉個例子,向df的末尾插入一列,列值都是a:

>>> df.insert(3,'new','a')

刪除列或行

使用drop()函數來刪除行或列:

DataFrame.drop(self, labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors='raise')

參數注釋:

  • labels 和 axis:labels參數指定要刪除的標簽,如果axis=0 或 'index',表示行標簽;如果axis=1 或 'columns',表示列標簽。axis的默認值是0。
  • index:設置index 等價於設置 labels 和axis=0;
  • columns:設置columns等價於設置 labels和 axis=1;

舉個例子,把df的列new刪除:

>>> df.drop(labels='new',axis=1)

追加數據行

向數據框的末尾追加數據行:

DataFrame.append(self, other, ignore_index=False, verify_integrity=False, sort=None)

也就是把一個結構相同的DataFrame追加到另一個DataFrame的后面,把兩個DataFrame合並為一個。

五,列數據類型轉換

astype(dtype) 函數用於把數據框的列轉換為特定的類型,dtype可以是pandas支持的類型,也可以是numpy.dtype,也可以是Python類型:

把數據框的列改變為字符串類型,str是python類型,'object'是pandas支持的字符串類型:

df['col_name'].astype(str)
df['col_name'].astype('object')

其他轉換類型的函數

使用Pandas提供的函數如to_numeric()、to_datetime()

 

參考文檔:

pandas DataFrame


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM