一、基本操作0. 导入模块import pandas as pd1. 新建DataFrame下面的例子中,我们新建一个有3条记录2列属性的表格。3 条记录分别是Tom,Bob,Alice的个人信息,2列属性分别是name和age。
新建属性列的语法形如df['XX']= List,属性名为XX,属性值是List。例如,新建属性列age的语法df['age']=[20,28,22],属性名为age,三条记录的数值为[20,28,22]。df = pd.DataFrame()
df['name']=['Tom','Bob','Alice']
df['age']=[20,28,22]
2. 查看DataFrame查看前n行。当DataFrame有海量记录的时候,我们可以只查看前n行来了解属性结构,以及数据的大致内容。
查看前n行语法df.head(n)。例如,df.head(1)查看第1行记录。df.head(1)
Screen Shot 2020-05-11 at 4.18.18 PM.png查看总行数,总列数。语法是df.shape,它返回(#rows,#cols)的元组。
也可以单独取出总行数df.shape[0]和总列数df.shape[1]。df.shape #(3, 2)DataFrame转Array。如果对数组操作更熟悉,那么可以绕开DataFrame操作的语法,用语法df.values把DataFrame直接转成2D数组来处理。df.values
Screen Shot 2020-05-11 at 4.25.48 PM.png3. 读写文件to_csv函数把DataFrame存到CSV文件中。
pd.read_csv函数把CSV文件内容读取到DataFrame中。df.to_csv('test2.csv')
df = pd.read_csv('test.csv')
三、DataFrame增删改查1. 添加行/列下面例子中,新增了一个height列,新增了一条Lily的记录。
新增一列的语法形如df['XX']=List,属性名XX,属性值为List。例如,语法df['height']=[1.75,1.80,1.68],新增列名height,数值分别为[1.75,1.80,1.68]。
新增一行用append函数,参数是Dict类型的一条记录,key是属性列名,value是属性值。df['height']=[1.75,1.80,1.68]
df = df.append({'name':'Lily','age':24,'height':1.65}, ignore_index=True)
2. 删除行/列下面的例子中,我们删除了height列,删除了一条Tom的记录。
删除行和删除列使用的函数是一样的,都使用drop函数。
删除行语法drop(0, inplace=True),参数是记录的index 0。
删除列的语法drop('height', axis=1, inplace=True),参数是属性名height。df.drop(0, inplace=True)
df.drop('height', axis=1, inplace=True)
3. 更新单个Cell/多个Cell更新单个cell的语法形如df.at[index,'XX']=value 。
例如:语法df.at[0,'name']='David'表示把0行name列的值修改成David。df = pd.DataFrame()
df['name']=['Tom','Bob','Alice']
df['age']=[20,28,22]
df.at[0,'name']='David'
更新多个cell的语法形如df.loc[df['XX']=condition, 'XX']=value。它的操作分两步,第一步先用df.loc函数找到符合条件df['XX']=condition的记录,第二步修改这些记录的属性值。
例如,语法df.loc[df['name'].str.contains('o'),'name']表示找到name属性包含字符'o'的记录,然后把这些记录的name值换成Testing。
例子中,Tom和Bob由于包含字符'o',因此都被替换成了Testing。df = pd.DataFrame()
df['name']=['Tom','Bob','Alice']
df['age']=[20,28,22]
df.loc[df['name'].str.contains('o'),'name'] = 'Testing' #多个cell
4. 查询记录查询记录的语法形如df[df['XX'] = condition]。
例如,语法df[df['age']<25]表示查询所有age列的值小于25的记录。
例子中,Tom年龄20<25,Alice年龄22<25,因而被查询到。df = pd.DataFrame()
df['name']=['Tom','Bob','Alice']
df['age']=[20,28,22]
df[df['age']<25]
四、高级操作1. Group操作下面的例子是一张成绩单,内容是三个人Tom,Bob,Alice的成绩,每人两科成绩:English成绩,Chinese成绩,因此共3*2=6条记录。
计算每个人的平均成绩。分两步完成这个任务:
1). 把记录按照name分组,语法是df.groupby('name')。
2). 组内计算成绩平均值,语法是df.groupby('name').mean()。
例子中,Tom的英文/语文成绩分别是70,100,因此均值是85。其它人计算同理。df = pd.DataFrame()
df['name']=['Tom','Tom','Bob','Bob','Alice','Alice']
df['course']=['English','Chinese','Chinese','English','English','Chinese']
df['score']=[70,100,99,95,85,90]
df.groupby('name').mean()