IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> pandas库--DataFrame常用操作 -> 正文阅读

[Python知识库]pandas库--DataFrame常用操作


前言

本篇文章将会持续更新,记录在日常工作中,容易遇到的pandas库DataFrame中的常用操作。


一、DataFrame创建

1.基于列表创建

data = [['Jack', 10], ['Tom', 12], ['Lucy', 13]]
columns = ['Name', 'Age']
df_by_list = pd.DataFrame(data, columns=columns)
print(df_by_list)

输出:

   Name  Age
0  Jack   10
1   Tom   12
2  Lucy   13

2.基于字典创建

row = {
            'Name': ['Jack', 'Tom', 'Lucy'],
            'Age': [10, 12, 13]
        }
df_by_dict = pd.DataFrame(row)
print(df_by_dict)

输出:

   Name  Age
0  Jack   10
1  Tome   12
2  Lucy   13

二、查询

1.df直接查询

① 查询一列

names = df['Name'].tolist()
print(names)

输出:

['Jack', 'Tom', 'Lucy']

② 条件查询

ages = df[(df['Age'] > 10) & (df['Age'] < 13)]
print(ages)

输出:

  Name  Age
1  Tom   12

2.query()方法

① 条件查询

result = df.query('Age > 10 & Age < 13')
print(result)

输出:

  Name  Age
1  Tom   12

② 带有变量的查询(用@变量)

names = ['Tom', 'Lily', 'Sam']
result = df.query('Name not in @names')
print(result)

输出:

   Name  Age
0  Jack   10
2  Lucy   13

三、增加

1.增加列

① 直接加:在最后一列加新的列

df['Gender'] = ['M', 'M', 'F']
print(df)

输出:

   Name  Age Gender
0  Jack   10      M
1   Tom   12      M
2  Lucy   13      F

② insert方法:可以指定位置加

df.insert(0, 'Gender', ['M', 'M', 'F'])
print(df)

输出:

  Gender  Name  Age
0      M  Jack   10
1      M   Tom   12
2      F  Lucy   13

2.增加行

① loc函数:增加一行

df.loc[len(df.index)] = ('Lily', 20)
print(df)

输出:

   Name  Age
0  Jack   10
1   Tom   12
2  Lucy   13
3  Lily   20

注意: 如果不加在最后一行,数据将会被替换,例:

df.loc[1] = ('Lily', 20)
print(df)

输出:

   Name  Age
0  Jack   10
1  Lily   20
2  Lucy   13

② 增加多行

data1 = [['Lily', 23], ['Sam', 35]]
columns1 = ['Name', 'Age']
df1 = pd.DataFrame(data1, columns=columns1)
df2 = pd.concat([df, df1], ignore_index=True)
print(df2)

输出:

   Name  Age
0  Jack   10
1   Tom   12
2  Lucy   13
3  Lily   23
4   Sam   35

注意:
1.ignore_index=True 参数表示重新设置索引
2.append方法即将过时,建议用concat方法
3.concat方法要求两个df需要有相同的列名

四、更新(改)

1. 更新整行值

data1 = [['Lily', 23], ['Sam', 35]]
columns1 = ['Name', 'Age']
new_df = pd.DataFrame(data1, columns=columns1)
df.update(new_df)
print(df)

输出:

   Name   Age
0  Lily  23.0
1   Sam  35.0
2  Lucy  13.0

2. 更新某个值

df.loc[0, 'Age'] = 25
print(df)

输出:

   Name  Age
0  Jack   25
1   Tom   12
2  Lucy   13

五、删除

1. 删除行

df = df.drop(df[(df['Age'] > 10) & (df['Age'] < 13)].index)
print(df)

输出:

   Name  Age
0  Jack   10
2  Lucy   13

2. 删除列

df = df.drop('Age', axis=1)
print(df)

输出:

   Name
0  Jack
1   Tom
2  Lucy

注意:
DataFrame.drop(labels=None,axis=0, index=None, columns=None, inplace=False)

  • labels:要删除的行或列,用列表给出
  • axis:默认为0,指要删除的是行,删除列时需指定axis为1
  • index :直接指定要删除的行,删除多行可以使用列表作为参数
  • columns:直接指定要删除的列,删除多列可以使用列表作为参数
  • inplace: 默认为False,该删除操作不改变原数据;inplace = True时,改变原数据

六、遍历

for index, row in df.iterrows():
    print(index)
    print(row['Name'])
    print(row['Age'])

输出:

0 Jack 10
1 Tom 12
2 Lucy 13

注意: 这里的iterrows()返回值为元组,(index,row),index即为行索引,row就是一行的所有数据,可通过字段名获取到


  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-06-29 19:00:05  更:2022-06-29 19:03:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/27 11:05:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码