【数据科学】02 pandas库-Series&DataFrame数据结构及其基本操作


1. 读入数据

import pandas as pd      #引入pandas库
df = pd.read_csv('students.csv',header=0,encoding='gbk') #读入文件中的数据集,保存到DataFrame对象df中

2. Pandas数据结构

Series

Series是一种类似于一维数组的对象,每个Series对象都由两个数组组成:

  • Index: 从numpy数组继承的Index对象,用于保存标签信息;
  • Value: 保存值的numpy数组,值的数据类型没有限制,可以是各种numpy数据类型。
IndexValue
202200195
202200285
202200390

1. 创建Series对象

Series(data,[参数列表])

  • data:传入的数据,可以是列表、元祖、字典、numpy数组。
  • index:指定索引,要求是一个列表。
    如果没有指定索引,系统自动创建0~n-1(n为data中元素的个数)的整数型索引。
    使用字典创建Series对象时,字典的key作为索引。
marks = pd.Series([95,85,90],index=['2022001','2022002','2022003'])
# 通过对象的index和values属性,获取索引对象和值的数组表示形式。
print(marks.index)
print(marks.value)

2. 数据访问

  • 查询序号为1的学生的成绩
marks[1] 	
>>> 88
  • 查询学号为2022001的学生的成绩
marks['2022001']
>>> 95
  • 查询位置序号为1和3的两名学生的成绩
marks[[1,3]]	 
>>> 2022001    95
>>> 2022003    90

marks[1:3] # 切片
>>> 2022001    95
>>> 2022003    90
  • 查询学号为2022001和2022003的学生的成绩
marks[['2022001','2022003']]
>>> 2022001    95
>>> 2022003    90
  • 查询所有大于85分的学生成绩
marks[marks>85]
>>> 2022001    95
>>> 2022003    90

3. 数据修改

  • 将marks中成绩低于90分的成绩修改为60分
marks[marks<90]=60

4. 数据删除

  • 删除marks中学号为2022001,2022002的学生成绩
marks.drop(['2022001','2022002'],inplace=True)

5. 数据添加

  • Series对象可以直接添加数据
# 在marks中添加学号为“2022004”的学生
marks['2022004'] = 98
  • 使用apppend方法将一组数据添加到原对象中
# 在marks中添加学号为“2022005”和“2022006”的学生,成绩分别为73,59
new_stu = pd.Series({'2022005':73,'2022006':59})
new_marks = marks.append(new_stu)
#【注】使用append方法将new_stu和 mark拼接成一个新的Series对象new_mark, new_stu和 marks保持不变。

DataFrame

每个DataFrame对象由三部分组成:

  • 行索引
  • 列索引
IndexNameMarkProfessional
2022001Daisy95Math
2022002Sarah85MBA
2022003Eric90Accounting

1. 创建DataFrame对象

DataFrame(data,[参数列表])

  • data:用于创建DataFrame的数据,不可缺省。
    可以是ndarry二维数组、由等长列表或numpy数组组成的字典、由Series组成的字典、由列表或元组组成的列表或其它DataFrame对象。
  • index:行标签,列表类型。
    若没有指定行索引,自动生成0~n-1的整数型索引,n为数据的行数。
  • columns: 列标签,列表类型。
    若没有指定列索引,自动生成0~m-1的整数型索引,m为数据的列数。
    使用字典创建DataFrame对象时,字典的key用作列标签。
data = [['Daisy',95,'Math'],['Sarah',85,'MBA'],['Eric',90,'Accounting']]
column = ['Name','Mark','Professional']
idx = [2022001,2022002,2022003]
students = pd.DataFrame(data,index=idx,columns=column)
# 通过对象的index、columns和values属性,获取索引对象和值的数组表示形式。
print(students.index)
print(students.columns)
print(students.values)

2. 数据访问

 数据选择方法说明
选择单个数据obj.iloc[iloc,cloc]根据位置序号选择第iloc行,第cloc列的单个数据
obj.loc[index,col]根据索引选择index所在行,col所在列的单个数据
obj.at[index,col]根据索引选择index所在行,col所在列的单个数据
obj.get_value(index,col)根据索引选择index所在行,col所在列的单个数据
选择某些行某些列的数据obj.iloc[iloclist,cloclist]根据位置序号选择某些行某些列的数据,省略cloclist选择所有列
obj.iloc[a:b,c:d]根据位置序号,选择a~b-1行,c~d-1列的数据,行或列用:替代,表示选择所有行或列
obj.loc[indexlist,collist]根据索引选择某些行某些列的数据,省略collist,选择所有列
obj[col]根据索引选择某列(全部行)的数据 ,等价于obj.col
obj[collist]根据索引选取多个列(全部行)的数据
obj[a:b]根据位置序号,选择a~b-1行所有列的数据
根据条件筛选数据obj.loc[condition,collist]根据所构造的条件表达式,选择满足条件的行
  • 查询第1行第2列的数据
students.iloc[1,2]   		
>>> 'MBA'
  • 查询学号为2022001学生的成绩
students.loc[2022001,'Mark']
>>> 95
  • 查询第0、2行第0,2列的数据
students.iloc[[0,2],[0,2]]
>>>           Name Professional
	2022001  Daisy         Math
	2022003   Eric   Accounting
  • 查询前3行,最后2列的数据
students.iloc[:3,-2:]
>>>         Mark Professional
	2022001    95         Math
	2022002    85          MBA
	2022003    90   Accounting

3. 数据修改

  • 将数学专业修改为统计学
students.loc[students.Professional=='Math','Professional']='Statics'

4. 数据删除

Drop(labels = None, axis = 0, index = None, columns = None, level = None, inplace = False, errors = ‘raise’)

  • labels:要删除的列或者行,如果要删除多个,传入列表
  • axis:轴向参数,指明按行或列删除数据。
    axis=0,删除数据的行,axis=1,删除数据的列。默认axis=0
  • index:指定的一行或多行
  • columns:指定的一列或多列
  • level:索引层级,将删除此层级
  • inplace:布尔值,是否生效
  • errors:ignore或raise,默认为raise,如果为ignore,则容忍错误,仅删除现有标签

【注】drop方法产生副本,在副本中删除数据。要删除原始对象中的数据,使用drop方法时,设置参数 inplace=True,或采用重新赋值的方式。

  • 删除students中学号为2022001和2022002的学生
students.drop(['2022001','2022002'],inplace=True) 
  • 删除students中的Professional列:
students.drop('Prfessional',axis=1,inplace=True)

5. 数据添加

  • DataFrame对象添加新的列数据
# 给students添加Age列
students['Age']=[20,21,20]
# 【注】若列标签“年龄”不存在,添加新列,否则,修改该列的值。
  • DataFrame对象添加行数据时,需要为新增加的数据创建Series对象,然后使用append方法进行添加
# 在students中添加学号2022009的学生
new_stu1 = pd.Series(['Amy',83, 'MBA'])
new_stu1.index = ['Name','Mark','Professional']
new_stu1.name = '20220009'
new_students = students.append(new_stu1)



希望能够对你有所帮助。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值