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

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

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

一,數據框構造函數

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

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

參數註釋:數組

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

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

二,建立數據框

一般狀況下,咱們使用pd.DataFrame()函數來建立數據框,固然也能夠根據須要使用pd.DataFrame.from_dict()函數來建立數據框。函數

1,使用字典來建立數據框spa

經過等長的字典來建立數據框,並能夠設置數據框的列名和行索引。字典存儲的是每列的數據:code

>>> 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)來建立數據框
htm

列表項是列表,把該列表轉換爲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

原文出處:https://www.cnblogs.com/ljhdo/p/10593914.html

相關文章
相關標籤/搜索