【pandas小技巧】--随机挑选子集

pandas,技巧,随机,挑选,子集 · 浏览次数 : 65

小编点评

**随机挑选 DataFrame 的子集** 在 pandas 中,随机挑选 DataFrame 的子集可以帮助我们更深入地了解数据,从而更好地进行数据分析和决策。 **核心参数:** * **frac:**样本数量占总量的百分比,默认 0.1。 * **random_state:**随机状态,默认 1111。 **使用示例:** ```python df1 = df.sample(frac=0.1, random_state=1111) df1.sort_index() ``` **其他参数:** * **n:**样本数量,默认 100。 * **random_state:**随机状态,默认 1111。 **应用场景:** * **数据质量评估:**通过随机选择一些行或列来评估数据的分布、离群值、缺失值等情况。 * **数据理解:**通过随机选择一些列来了解数据的分布、趋势、相关性等情况。 * **模式发现:**通过随机选择一些行或列来探索数据之间的相关性或趋势,从而发现潜在的模式或规律。 * **新数据分析方法探索:**通过随机选择一些列来探索新的数据分析方法。 * **数据分割:**利用 `split_dataset()` 函数将数据平均划分为多个数据集。 **代码示例:** ```python import pandas as pd # 加载数据 df = pd.read_csv("nanjing-jianye.csv") # 按百分比随机选择样本 df1 = df.sample(frac=0.1, random_state=1111) df1.sort_index() # 按个数随机选择样本 df2 = df.sample(n=100, random_state=1111) ``` **注意:** * `random_state` 参数控制了随机选择的样本重复性。相同随机状态下,随机选择的结果相同。 * `n` 参数用于随机选择样本数量。默认值为 10。

正文

pandas 中,如果遇到数据量特别大的情况,随机挑选 DataFrame 的子集可以帮助我们更深入地了解数据,从而更好地进行数据分析和决策。

随机挑选子集的用途主要有:

  1. 评估数据质量:随机挑选 DataFrame 的子集可以帮助我们检查数据集的质量,以便进一步探索和挖掘数据。例如,我们可以通过随机选择一些行或列来评估数据的分布、离群值、缺失值等情况。
  2. 加深理解数据:随机挑选 DataFrame 的子集可以帮助我们更深入地了解数据。例如,我们可以通过随机选择一些列来了解数据的分布、趋势、相关性等情况。
  3. 发现潜在模式:随机挑选 DataFrame 的子集可以帮助我们发现潜在的模式或规律。例如,我们可以通过随机选择一些行或列来探索数据之间的相关性或趋势,从而发现潜在的模式或规律。
  4. 探索新的数据分析方法:随机挑选 DataFrame 的子集可以帮助我们探索新的数据分析方法。例如,我们可以通过随机选择一些列来探索新的数据分析方法,如时间序列分析、空间分析等。
  5. 提高程序性能:随机挑选 DataFrame 的子集可以帮助我们优化程序性能。例如,我们可以通过随机选择一些列来减少计算量,从而提高程序性能。

本篇介绍一种pandas挑选子集的方式,以及子集在机器学习中常用的一个场景。

1. 随机挑选

这次示例中准备的数据来自链家网,我采集了一些南京市建邺区的房产交易数据,共有11290条。

import pandas as pd

fp = "nanjing-jianye.csv"
df = pd.read_csv(fp)
df

image.png

1.1. 按百分比挑选

按百分比随机挑选样本的核心参数是 fracrandom_state

  1. frac:样本数量占总量的百分比
  2. random_state:随机状态,这个值相同,取出的样本是一样的
df1 = df.sample(frac=0.1, random_state=1111)
df1.sort_index()

image.png
上面的示例中 frac=0.1,相当于获取总量10%的样本,总量11290条,所以样本数量1129条。

示例中的random_state=1111,只要改变这个数值,取出的样本就是会变化。

df1 = df.sample(frac=0.1, random_state=2222)
df1.sort_index()

image.png

1.2. 按个数挑选

按个数随机挑选样本的核心参数是 nrandom_state

  1. n:样本数量
  2. random_state:随机状态,这个值相同,取出的样本是一样的
df2 = df.sample(n=100, random_state=1111)
df2.sort_index()

image.png
上面的示例中n=100,随机取100个样本,其中random_state的作用和按百分比挑选一样。

2. 机器学习中使用场景

随机挑选子集的用途开头已经介绍了很多,还有个重要的应用场景是在机器学习时,可以将数据划分为训练集测试集

针对这个需求,利用上面介绍的sample函数封装一个平均划分的子集接口。
用于机器学习时分隔训练集和测试集。

import pandas as pd
import random

def split_dataset(df: pd.DataFrame, n = 10):
    """
    df: 带划分的数据集
    n: 划分子集的个数,默认10个
    """
    total = len(df)
    subset_count = total // n

    dataset = []
    df_left = df.copy()
    for i in range(n):
        df_subset = df_left.sample(n=subset_count, random_state=random.randint(1000,9999))
        dataset.append(df_subset.copy())

        df_left = df_left.drop(index=df_subset.index)

    return dataset

比如上面示例的房产成交数据(共11290条),通过此方法可以平均划分成n个数据集。

ds = split_dataset(df, n=10)
ds

image.png
ds列表中就是平均划分的10个子集。
应用机器学习的算法时,可以循环任意选择7个作为训练集,剩余3个作为测试集。

3. 附录

本篇中使用的数据下载地址:nanjing-jianye.csv

与【pandas小技巧】--随机挑选子集相似的内容:

【pandas小技巧】--随机挑选子集

在 `pandas` 中,如果遇到数据量特别大的情况,随机挑选 DataFrame 的子集可以帮助我们更深入地了解数据,从而更好地进行数据分析和决策。 随机挑选子集的用途主要有: 1. 评估数据质量:随机挑选 DataFrame 的子集可以帮助我们检查数据集的质量,以便进一步探索和挖掘数据。例如,我

【pandas小技巧】--日期相关处理

日期处理相关内容之前`pandas基础`系列中有一篇专门介绍过,本篇补充两个常用的技巧。 # 1. 多列合并为日期 当收集来的数据中,年月日等信息分散在多个列时,往往需要先合并成日期类型,然后才能做分析处理。合并多列转换为日期类型,可以直接用 `to_datetime`函数来处理: ```pytho

【pandas小技巧】--数据转置

所谓**数据转置**,就是是将原始数据表格沿着对角线翻折,使原来的行变成新的列,原来的列变成新的行,从而更方便地进行数据分析和处理。 `pandas`中`DataFrame`的转置非常简单,每个`DataFrame`对象都有一个`T`属性,通过这个属性就能得到转置之后的`DataFrame`。下面介

【pandas小技巧】--统计值作为新列

这次介绍的小技巧不是统计,而是把统计结果作为**新列**和原来的数据放在一起。`pandas`的各种统计功能之前已经介绍了不少,但是每次都是统计结果归统计结果,原始数据归原始数据,没有把它们合并在一个数据集中来观察。 下面通过两个场景示例来演示如果把统计值作为新列的数据。 # 1. 成绩统计的场景

【pandas小技巧】--category类型补充

`category`类型在**pandas基础**系列中有一篇介绍数据类型的文章中已经介绍过。`category`类型并不是`python`中的类型,是`pandas`特有的类型。 `category`类型的优势那篇文章已经介绍过,当时只是介绍了如何将某个列的数据转换成`category`类型,以及

【pandas小技巧】--DataFrame的显示参数

我们在`jupyter notebook`中使用`pandas`显示`DataFrame`的数据时,由于屏幕大小,或者数据量大小的原因,常常会觉得显示出来的表格不是特别符合预期。 这时,就需要调整`pandas`显示`DataFrame`的方式。`pandas`为我们提供了很多调整显示方式的参数,具

【pandas小技巧】--DataFrame的显示样式

上一篇介绍了`DataFrame`的显示参数,主要是对`DataFrame`中值进行调整。 本篇介绍`DataFrame`的显示样式的调整,显示样式主要是对表格本身的调整,比如颜色,通过颜色可以突出显示重要的值,观察数据时可以更加高效的获取主要信息。 下面介绍一些针对单个数据和批量数据的样式调整方式

【pandas小技巧】--花哨的DataFrame

最近github上发现了一个库(`plottable`),可以用简单的方式就设置出花哨的 `DataFrame` 样式。 github上的地址:[https://github.com/znstrider/plottable](https://github.com/znstrider/plottabl

【pandas小技巧】--目录(完结)

`pandas`小技巧系列是介绍的是使用`pandas`分析数据时,最常用的一些操作技巧。 具体包括: 1. [创建测试数据](https://www.cnblogs.com/wang_yb/p/17552748.html) 学习pandas的过程中,为了尝试pandas提供的各类功能强大的函数,常

【pandas小技巧】--创建测试数据

学习`pandas`的过程中,为了尝试`pandas`提供的各类功能强大的函数,常常需要花费很多时间去创造测试数据。 在`pandas`中,快速创建测试数据可以更快的评估 `pandas` 函数。通过生成一组测试数据,可以评估例如 `read_csv`、`read_excel`、`groupby`等