【今日推荐】:为什么一到面试就懵逼!>>> Python数据分析-第6章DataFrame(上)-LMLPHP

  • 数据帧类似于二维的关系表,包含一组有序的列,列与列之间的数据类型可以是不同的,但是单个列的数据类型是相同的。
  • 数据帧的每一列或每一行都可以认为是一个Series。
  • DataFrame中面向行和面向列的操作基本上是相同的,把行和列称作轴(axis),DataFrame是按照轴进行操作的,axis=0表示行轴;axis=1 表示列轴。
  • DataFrame对象既有行索引(index),也有列索引(columns),行索引也叫做行标签,列索引也叫做列标签/列名。
  • 在DataFrame的构造函数中,columns参数用于设置列索引,index用于设置行索引,都属于Index类型。Index对象既可以使用位置(整数)来表示,也可以使用标签(字符串)来表示,位置的起始值是0,标签是通过列表来指定的。

具体属性和方法可以参考官方API

 

1.构造

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

参数注释:

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

1.1.使用字典来创建

通过等长的字典来创建数据帧,并可以设置数据框的列名和行索引。字典存储的是每列的数据:

In [3]:
import pandas as pd
data = {'user':['小王','小李','小明'],'shcool':['清华','北大','科大'],'class':['数学','历史','计算机']}
df = pd.DataFrame(data)
df
Out[3]:
 

1.2.使用列表(列表项是List)来创建

In [7]:
import pandas as pd
data = [['小王','小李','小明'],['清华','北大','科大'],['数学','历史','计算机']]
columns = ['user','shcool','class']
df = pd.DataFrame(data,columns=columns)
df
Out[7]:
 

1.3.使用from_dict创建

In [6]:
import pandas as pd
data = {'user':['小王','小李','小明'],'shcool':['清华','北大','科大'],'class':['数学','历史','计算机']}
df = pd.DataFrame.from_dict(data)
df
Out[6]:
 

2.属性

 

2.1.索引

In [9]:
import pandas as pd
data = {'user':['小王','小李','小明'],'shcool':['清华','北大','科大'],'class':['数学','历史','计算机']}
df = pd.DataFrame.from_dict(data)
 
  • 通过index属性来访问数据框的行标签
In [10]:
df.index
Out[10]:
RangeIndex(start=0, stop=3, step=1)
 
  • 通过columns属性访问数据框的列标签
In [11]:
df.columns
Out[11]:
Index(['user', 'shcool', 'class'], dtype='object')
 

2.2.shape

In [12]:
df.shape
Out[12]:
(3, 3)
 

2.3.轴

In [13]:
df.axes
Out[13]:
[RangeIndex(start=0, stop=3, step=1),
 Index(['user', 'shcool', 'class'], dtype='object')]
In [14]:
df.axes[0]
Out[14]:
RangeIndex(start=0, stop=3, step=1)
In [15]:
df.axes[1]
Out[15]:
Index(['user', 'shcool', 'class'], dtype='object')
 

2.4.数据类型

In [16]:
df.dtypes
Out[16]:
user      object
shcool    object
class     object
dtype: object
 

2.5.值

In [18]:
df.values
Out[18]:
array([['小王', '清华', '数学'],
       ['小李', '北大', '历史'],
       ['小明', '科大', '计算机']], dtype=object)
In [19]:
df.values[0]
Out[19]:
array(['小王', '清华', '数学'], dtype=object)
 

3.列操作和行操作

In [20]:
import pandas as pd
data = {'user':['小王','小李','小明'],'shcool':['清华','北大','科大'],'class':['数学','历史','计算机']}
df = pd.DataFrame.from_dict(data)
 

3.1.追加列

通过为一个新列赋值来向数据框中追加新列,新列始终处于列名序列的末尾:

In [21]:
df['createtime']=['1910','1900','1965']
df
Out[21]:
 

3.2.插入列

要制定新列的位置,需要使用insert()函数,该函数向数据框中插入一列,并制定新列的位置:

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

参数注释:

  • loc:插入列的位置,该位置索引必须0 <= loc <= len(columns)
  • column:插入列的名称
  • value:插入列的值,可以是单个标量值,插入列的值都是相同的;可以是序列或array-like,为每一行的列设置一个值。
In [22]:
df.insert(1,'score',[98,99,99.5])
df
Out[22]:
In [23]:
df.insert(1,'age',22)
df
Out[23]:
 

3.3.删除列或行

使用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;
In [27]:
df
Out[27]:
In [29]:
df.drop(labels=['age1'],axis=1)
Out[29]:
 

3.4.追加数据行

向数据框的末尾追加数据行:

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

功能说明:向dataframe对象中添加新的行,如果添加的列名不在dataframe对象中,将会被当作新的列进行添加

  • other:DataFrame、series、dict、list这样的数据结构
  • ignore_index:默认值为False,如果为True则不使用index标签
  • verify_integrity :默认值为False,如果为True当创建相同的index时会抛出ValueError的异常
  • sort:boolean,默认是None,该属性在pandas的0.23.0的版本才存在。
In [37]:
import pandas as pd
data = {'user':['小王','小李','小明'],'shcool':['清华','北大','科大'],'class':['数学','历史','计算机']}
df = pd.DataFrame.from_dict(data)
df
Out[37]:
In [38]:
df.insert(1,'age',22)
df
Out[38]:
In [39]:
data1 = {'user':['小郑','大王'],'shcool':['清华','医大'],'class':['物理','针灸']}
df1=df.append(data1,ignore_index=True)
df1
Out[39]:
In [41]:
data2 = {'user':['小郑','大王'],'shcool':['清华','医大'],'class':['物理','针灸']}
df2 = pd.DataFrame.from_dict(data2)
df3 = df.append(df2)
df3
Out[41]:
 

4.列数据类型转换

astype(dtype)函数用于把数据框的列转换为特定的类型,dtype可以是pandas支持的类型,也可以是numpy.dtype,也可以是Python类型:

In [42]:
df.dtypes
Out[42]:
user      object
age        int64
shcool    object
class     object
dtype: object
In [48]:
df['age']=df['age'].astype('float64')
In [49]:
df.dtypes
Out[49]:
user       object
age       float64
shcool     object
class      object
dtype: object

更多文章,请关注:
Python数据分析-第6章DataFrame(上)-LMLPHP        

04-14 03:20