數據框類似於二維的關系表,包含一組有序的列,列與列之間的數據類型可以是不同的,但是單個列的數據類型是相同的。數據框的每一列或每一行都可以認為是一個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()
參考文檔: