Python Pandas库 DateFrame操作

本文详细介绍了Pandas DataFrame的初始化、查询、增加、删除和修改数据的方法,包括使用字典和列表初始化DataFrame,通过列名、行索引查询数据,以及插入、删除列和行,修改数据等操作,是Python数据处理的重要参考资料。
摘要由CSDN通过智能技术生成

1. 下载

pip install -i https://mirrors.aliyun.com/pypi/simple/ pandas==1.1.4

在这里插入图片描述

1. DataFrame数据初始化

  1. 字典数据初始化
data = {
	'属性1': ["A", "A", "A", "A", "A", "B", "B", "B", "B", "C", "C", "C", "C", "C"],
	'属性2': [70.0, 90.0, 85, 95, 70, 90, 78, 65, 75, 80, 70, 80, 80, 96],
	'属性3': ["真", "真", "假", "假", "假", "真", "假", "真", "假", "真", "真", "假", "假", "假"],
	'类': ["类1", "类2", "类2", "类2", "类1", "类1", "类1", "类1", "类1", "类2", "类2", "类1", "类1", "类1"]
}

data1 = pd.DataFrame(data)
  1. 二维数组初始化,添加表头
# 2. 列表初始化
data2 = pd.DataFrame(data=[['lisa', 'f', 22], ['joy', 'f', 22], ['tom', 'm', '21']], \
					index=[1, 2, 3],columns=['name', 'sex', 'age'])

2. Pandas.DateFrame() 增、删、改、查

  • 测试数据
   name sex age
1  lisa   f  22
2   joy   f  22
3   tom   m  21

2.1 查询

  1. 按照列的名字查询列
>>> data["name"]
1    lisa
2     joy
3     tom
Name: name, dtype: object
  1. 按照行索引查询, 与列表的切片一致
>>> data[1:3]
  name sex age
2  joy   f  22
3  tom   m  21
  1. 查询一列
  • 返回列
>>> data.columns
Index(['name', 'sex', 'age'], dtype='object')
  • 转化为list
>>> list(data.columns)
['name', 'sex', 'age']
  • 查询一列数据
>>> data[data.columns[-1]]
1    22
2    22
3    21
Name: age, dtype: object
  • 转化为列表
>>> list(data[data.columns[-1]])
[22, 22, '21']
  • 查询多列
>>> data[data.columns[0: 2]]
   name sex
1  lisa   f
2   joy   f
3   tom   m
  • 转化为列表, 可见多行数据不能转为二维列表
>>> list(data[data.columns[0: 2]])
['name', 'sex']
  1. 查询一个数据
  • 使用loc
  • 选取一个数据
>>> data.loc[1, "name"]
'lisa'
  1. 查询多个数据,使用loc[rowIndex, column_name]
  • 选取多个数据, 指定范围的行,1: 3都会选取
>>> data.loc[1: 3, ["name", "age"]]
   name age
1  lisa  22
2   joy  22
3   tom  21
  • 指定行
>>> data.loc[[1, 3], ["name", "age"]]
   name age
1  lisa  22
3   tom  21
  1. 使用下标选取数据iloc[rowIndex, column_index], 下标从0 开始
  • 选取一个
>>> data.iloc[0, 0]
'lisa'
  • 选取多个
  • 多行选取
>>> data.iloc[0:2, 0]
1    lisa
2     joy
Name: name, dtype: object
>>> data.iloc[[0, 2], 0]
1    lisa
3     tom
Name: name, dtype: object
  • 多列选取
>>> data.iloc[0, 0:2]
name    lisa
sex        f
Name: 1, dtype: object
>>> data.iloc[0, [0, 2]]
name    lisa
age       22
Name: 1, dtype: object
  • 多行多列选取与上面类似
  1. 条件查询
  • 单条件
>>> data.loc[data["Sex"] == "m", ["姓名", "Age"]]
       姓名 Age
c     tom  21
d  Python  20
  • 多条件
>>> data.loc[data.loc[: ,"Sex"] == "m", ["姓名", "Age"]]
       姓名 Age
c     tom  21
d  Python  20
a = data.loc[data.loc[: ,"Sex"] == "m", ["姓名", "Age"]]

>>> type(a)
<class 'pandas.core.frame.DataFrame'>

>>> a.loc[a["Age"] == 20, ["姓名", "Age"]]
       姓名 Age
d  Python  20

3. 增加数据

  1. insert(columnIndex, columnName, [数据]) 在指定的columnIndex处, 增加一列columnName的列
>>> city = ["BeiJing", "ShangHai", "Gangzhou"]
>>> data.insert(3, "city", city)
>>> data
   name sex age      city
1  lisa   f  22   BeiJing
2   joy   f  22  ShangHai
3   tom   m  21  Gangzhou
  1. data[columnName] = [数据] 默认在最后一列增加
>>> job = ["Teacher", "Driver", "Doctor"]
>>> data["jobs"] = job
>>> data
   name sex age      city     jobs
1  lisa   f  22   BeiJing  Teacher
2   joy   f  22  ShangHai   Driver
3   tom   m  21  Gangzhou   Doctor

  1. 使用loc[row, column], iloc[rowIndex, columnIndex] 添加, 默认添加到最后一列
>>> data.loc[:, "salary"] = ["1k", "2k", "3k"]
>>> data
   name sex age      city     jobs salary
1  lisa   f  22   BeiJing  Teacher     1k
2   joy   f  22  ShangHai   Driver     2k
3   tom   m  21  Gangzhou   Doctor     3k
  1. 按照指定的行添加, loc[row, : ]需要指定行的位置,从1开始, 可以覆盖原来的行,对原来的行进行修改
>>> data.loc[4, :] = ["tomcat", "f", 20, "ShenZhen", "Programer", "4k"]
>>> data
     name sex age      city       jobs salary
1    lisa   f  22   BeiJing    Teacher     1k
2     joy   f  22  ShangHai     Driver     2k
3     tom   m  21  GangZhou     Doctor     3k
4  tomcat   f  20  ShenZhen  Programer     4k

4. 删除数据

  1. 使用DataFrame.drop(labels=None,axis=0, index=None, columns=None, inplace=False)
  • labels 就是要删除的行列的名字,用列表给定
  • axis 默认为0,指删除行; axis=1, 删除列
  • index 直接指定要删除的行
  • columns 直接指定要删除的列
  • inplace=False,默认该删除操作不改变原数据,而是返回一个执行删除操作后的新dataframe
  • inplace=True,则会直接在原数据上进行删除操作,删除后无法返回
  1. 删除一行或多行,使用列表指定
>>> data.drop([1], axis=0, inplace=False)
     name sex age      city       jobs salary
2     joy   f  22  ShangHai     Driver     2k
3     tom   m  21  GangZhou     Doctor     3k
4  tomcat   f  20  ShenZhen  Programer     4k

  1. 删除一列或多列,使用列表指定
>>> data.drop(["name"], axis=1, inplace=False)
  sex age      city       jobs salary
1   f  22   BeiJing    Teacher     1k
2   f  22  ShangHai     Driver     2k
3   m  21  GangZhou     Doctor     3k
4   f  20  ShenZhen  Programer     4k
  1. 使用Python关键字 del
  • 深Copy一个数据集
>>> data1 = data.copy(deep=True)
>>> data1
     name sex age      city       jobs salary
1    lisa   f  22   BeiJing    Teacher     1k
2     joy   f  22  ShangHai     Driver     2k
3     tom   m  21  GangZhou     Doctor     3k
4  tomcat   f  20  ShenZhen  Programer     4k
  • 删除,直接对内存空间中的data1进行操作
>>> del data["name"]
>>> data
  sex age      city       jobs salary
1   f  22   BeiJing    Teacher     1k
2   f  22  ShangHai     Driver     2k
3   m  21  GangZhou     Doctor     3k
4   f  20  ShenZhen  Programer     4k
  1. 使用pop 函数, 删除内存里指定的数据后返回
>>> data.pop("age")
1    22
2    22
3    21
4    20
Name: age, dtype: object

>>> data
  sex      city       jobs salary
1   f   BeiJing    Teacher     1k
2   f  ShangHai     Driver     2k
3   m  GangZhou     Doctor     3k
4   f  ShenZhen  Programer     4k

5. 修改数据

  1. 改行列
  • 修改列名
>>> data.columns = ["姓名", "性别", "年龄"]
>>> data
     姓名 性别  年龄
1  lisa  f  22
2   joy  f  22
3   tom  m  21
>>> data.rename(columns={"姓名": "Name", "性别": "Sex", "年龄": "Age"}, inplace=True)
>>> data
   Name Sex Age
1  lisa   f  22
2   joy   f  22
3   tom   m  21
>>> data.rename({"Name": "姓名"}, axis=1, inplace=True)
>>> data
     姓名 Sex Age
a  lisa   f  22
b   joy   f  22
c   tom   m  21
  • 修改行名
>>> data.index = ["a", "b", "c"]
>>> data
   Name Sex Age
a  lisa   f  22
b   joy   f  22
c   tom   m  21

>>> data.rename({"a": 1}, axis=0, inplace=True)
>>> data
   Name Sex Age
1  lisa   f  22
b   joy   f  22
c   tom   m  21
>>> data.rename(index={1: "a"}, inplace=True)
>>> data
   Name Sex Age
a  lisa   f  22
b   joy   f  22
c   tom   m  21
  1. 使用lociloc 定位一个数据后直接修改
  • 单个修改,修改数据
>>> data.loc["a", "Sex"] = "m"
>>> data
     姓名 Sex  Age
a  lisa   m   22
b   joy   f   22
c   tom   m   21
  • 多个修改使用列表
>>> data.loc["a", ["Sex", "Age"]] = ["f", 18]
>>> data
     姓名 Sex  Age
a  lisa   f   18
b   joy   f   22
c   tom   m   21
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值