【数据分析---Pandas实战指南:精通数据查询、增删改操作与高效索引和列名操作管理】

前言:
💞💞大家好,我是书生♡,本阶段和大家一起分享和探索数据分析,本篇文章主要讲述了:数据查询操作,数据增删改操作,索引和列名操作等等。欢迎大家一起探索讨论!!!
💞💞代码是你的画笔,创新是你的画布,用它们绘出属于你的精彩世界,不断挑战,无限可能!

个人主页⭐: 书生♡
gitee主页🙋‍♂:闲客
专栏主页💞:大数据开发
博客领域💥:大数据开发,java编程,前端,算法,Python
写作风格💞:超前知识点,干货,思路讲解,通俗易懂
支持博主💖:关注⭐,点赞、收藏⭐、留言💬

目录

  • 1. Pandas数据查询操作
    • 1.1 基本查询方法
      • 1.1.1 从前从后查询---head和tail
      • 1.1.2 查询一/多列数据--- 对象名[列名]
      • 1.1.3 布尔值向量查询多行数据
      • 1.1.4 行下标切片查询多行数据---对象名[起始下标值:结束下标值:步长]
    • 1.2 loc查询行列数据
    • 1.3 iloc查询行列数据
    • 1.4 loc和iloc的区别
    • 1.5 query方法
    • 1.6 where 方法
    • 1.7 isin 方法获取子集
    • 1.8 方法小结(重点)
  • 2. Pandas数据增删改操作
    • 2.1 增加列
      • 2.1.1 末尾增加列
      • 2.1.2 insert方法指定位置增加列数据
    • 2.2 DataFrame删除行列
    • 2.3 数据去重
      • 2.3.1 drop_duplicates()
      • 2.3.2 unique 去重
    • 2.4 Series 和 DataFrame 修改数据
      • 2.4.1 直接修改数据
      • 2.4.2 replace 替换数据
      • 2.4.3 apply调用自定义函数修改
      • 2.4.4 applymap方法
    • 2.5 小结(重点)
  • 3. DataFrame获取索引和列名
    • 3.1 获取索引和列名
      • 3.1.1 获取DF对象的索引和列名
      • 3.1.2 获取S对象的索引和列名
    • 3.2 修改索引和列名
      • 3.2.1 指定列作为索引
      • 3.2.2 重置索引
      • 3.2.3 赋值修改
      • 3.2.4 rename方法修改索引和列名
    • 3.3 小结(重点)

1. Pandas数据查询操作

1.1 基本查询方法

准备数据:从文件中读取数据,使用read_csv方法

# 导入模块
import pandas as pd
import numpy as np

# 加载链家租房数据
df = pd.read_csv('data/LJdata.csv')

1.1.1 从前从后查询—head和tail

  • 从前面查询使用-----》head(n)
  • 从后面查询使用-----》tail(n)
  • n是我们查询的行数,默认是5行
# 前3条数据
print(df.head(n=3))
# 后3条数据 
df.tail(n=3)  

在这里插入图片描述

1.1.2 查询一/多列数据— 对象名[列名]

  • 获取一列数据

df[列名] / df.列名 -> 列名不能有空格/不能和属性名重名

# 获取一列数据
print(df['id'].head(n=5))
print(df.name.head(n=5))

在这里插入图片描述

  • 获取多列数据

获取多列数据 select 列名1, 列名2, … from 表名
df[[列名1, 列名2, ...]]

# 获取多列数据
df[['name', 'age']].head(n=3)

在这里插入图片描述

1.1.3 布尔值向量查询多行数据

  • 通过布尔值向量获取多行数据
# 通过布尔值向量获取多行数据
df_head = df.head()
df_head

在这里插入图片描述

  • 布尔值s对象获取多行数据

注意:
df[‘age’] == df[‘age’].max()

这个表达式返回一个Series,其中包含布尔值(True 或
False),表示DataFrame中每一行的’age’列是否等于’age’列的最大值。 返回类型:
返回的是一个布尔Series,长度与原始DataFrame相同,每个元素表示对应行的’age’值是否为最大。

df[df[‘age’]==df[‘age’].max()]

描述: 这个表达式使用前面得到的布尔Series作为索引来筛选DataFrame,只保留那些满足条件(即’age’等于最大值)的行。
返回类型: 返回的是一个新的DataFrame,只包含那些’age’列值等于最大值的行。

# 布尔值s对象获取多行数据
print(df['age'] == df['age'].max())
df[df['age']==df['age'].max()]

在这里插入图片描述

  • 布尔值列表获取多行数据
# 布尔值列表的个数要和df数据的行数一致
# 布尔值列表获取多行数据
list1 = [True, False, True, False, False, False,
               True, False, True, False, False, False,
               True, False, True, False,False]
df[list1]

在这里插入图片描述

  • 布尔值数组获取多行数据
# 布尔值数组获取多行数据
n1 = np.array([True, False, True, False, False, False,
               True, False, True, False, False, False,
               True, False, True, False,False])
df[n1]

在这里插入图片描述

1.1.4 行下标切片查询多行数据—对象名[起始下标值:结束下标值:步长]

通过行下标切片获取多行数据, 语法等同于python容器索引切片
行下标从上到下从0开始, 从下到上从-1开始
df[起始下标值:结束下标值:步长]
左闭右开原则 -> 包含起始下标对应的行数据, 不包含结束下标对应的行数据
起始下标为0, 可以省略不写
结束下标不写, 获取最后一行数据
步长不写默认为1, 可以修改; 可以为负数, 倒序查询

数据准备

# 获取准备的数据
df_head = df.head(n=10)
df_head # 取前十条数据
# 查询前五条数据
temp_df = df_head[0:5] 
temp1_df = df[:5] # 起始下标值为0可以不写
temp2_df = df[3:] # 结束下标不写, 获取最后一行数据
temp3_df = df[::] # 全部省略,获取全部数据
temp4_df = df[::-1] # 倒序查询全部数据
temp5_df = df[::2] # 步长为2,查看奇数列,即id为1、3、5、7、9
temp6_df = df[::-2] # 步长为-2,查看偶数列,即id为2、4、6、8、10
temp7_df = df[9:6:-1]
temp7_df

在这里插入图片描述

1.2 loc查询行列数据

行索引值/列名:肉眼看到的值, 可以是任意值, 可以重复

  • df.loc[行索引名, 列名]
  • 索引/列下标: 从0开始, 或从-1开始 ,是看不见的
  • 索引名/列名: 肉眼看到的值, 可以是任意值, 可以有重复的值

在这里插入图片描述

  • 通过行索引名
# 获取行数据
# df.loc[[行索引名1, 行索引名2, ...]]
# 获取一行数据
print(df.loc[0]) # 返回Series对象
print(df.loc[[0]]) # 返回df对象
df.loc[[0, 1, 2]] # 返回df对象

在这里插入图片描述

  • 行索引值切片获取多行数据
    df.loc[起始索引值:结束索引值:步长]—左闭右闭
# 行索引值切片获取多行数据
# df.loc[起始索引值:结束索引值:步长]
# 左闭右闭原则

print(df.loc[0:5:1])
# df[0:5:1] # 取到第五行
print(df.loc[2::]) # 
print(df.loc[2:8:2]) # 步长为2,查看奇数列,即索引2,4,6,8
print(df.loc[::-1]) # 倒序查询全部数据
print(df.loc[9:6:-1]) # 倒序返回 9-6 的数据

在这里插入图片描述

  • 布尔值向量获取多行数据
    df.loc[布尔值向量]
# 布尔值向量获取多行数据
# df.loc[布尔值向量]
df.loc[df['age']==df['age'].max(), ['name', 'age']] 

在这里插入图片描述

  • 布尔值向
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值