加速数据分析,这12种高效Numpy和Pandas函数为你保驾护航
发布日期:2021-05-06 21:43:42 浏览次数:27 分类:精选文章

本文共 2791 字,大约阅读时间需要 9 分钟。

12种 Numpy 和 Pandas 函数,助力数据分析更高效

Numpy 的 6 种高效函数

Numpy 是 Python 环境下的科学计算扩展包,提供强大的 N 维数组操作和矩阵计算功能。以下是 Numpy 中 6 种实用函数,能够显著提升数据分析效率。

  • argpartition()

    该函数用于找出数组中的最大值索引,并返回这些索引。通过对索引排序,可以快速获取数组中的前几大值。

    x = np.array([12, 10, 12, 0, 6, 8, 9, 1, 16, 4, 6, 0])
    index_val = np.argpartition(x, -4)[-4:]
    index_val
    # array([1, 8, 2, 0], dtype=int64)
    np.sort(x[index_val])
    # array([10, 12, 12, 16])
  • allclose()

    用于检查两个数组是否在给定容忍度内相等。适用于验证数据集是否一致或是否有微小差异。

    array1 = np.array([0.12, 0.17, 0.24, 0.29])
    array2 = np.array([0.13, 0.19, 0.26, 0.31])
    np.allclose(array1, array2, 0.1) # False
    np.allclose(array1, array2, 0.2) # True
  • clip()

    用于限制数组中的值在指定范围内。可以快速截断超出上下限的数据,避免处理异常值。

    x = np.array([3, 17, 14, 23, 2, 2, 6, 8, 1, 2, 16, 0])
    np.clip(x, 2, 5)
    # array([3, 5, 5, 5, 2, 2, 5, 5, 2, 2, 5, 2])
  • extract()

    根据条件从数组中提取特定元素。支持逻辑条件(andor),适用于筛选特定类型的数据。

    array = np.random.randint(20, size=12)
    array
    # array([0, 1, 8, 19, 16, 18, 10, 11, 2, 13, 14, 3])
    cond = np.mod(array, 2) == 1
    cond
    # array([False, True, False, True, False, False, False, True, False, True, False, True])
    np.extract(cond, array)
    # array([1, 19, 11, 13, 3])
    np.extract(((array < 3) | (array > 15)), array)
    # array([0, 1, 19, 16, 18, 2])
  • where()

    返回满足条件的元素及其索引位置。类似于 SQL 中的 where 条件,支持多种比较操作。

    y = np.array([1, 5, 6, 8, 1, 7, 3, 6, 9])
    np.where(y > 5, 'Hit', 'Miss')
    # array(['Miss', 'Miss', 'Hit', 'Hit', 'Miss', 'Hit', 'Miss', 'Hit', 'Hit'])
  • percentile()

    计算特定百分位数的值,适用于统计分析和数据可视化。

    a = np.array([1, 5, 6, 8, 1, 7, 3, 6, 9])
    print("50th Percentile of a, axis=0: ", np.percentile(a, 50, axis=0))
    # 6.0
    b = np.array([[10, 7, 4], [3, 2, 1]])
    print("30th Percentile of b, axis=0: ", np.percentile(b, 30, axis=0))
    # [5.1, 3.5, 1.9]

  • Pandas 数据统计包的 6 种高效函数

    Pandas 是 Python 的一个强大数据分析库,擅长处理结构化数据和时间序列。以下是 6 种实用函数,能够提升数据处理效率。

  • read_csv(nrows=n)

    优化 CSV 文件读取,支持按行读取数据,避免一次性加载大文件。

    import io
    import requests
    url = "https://raw.github.com/vincentarelbundock/Rdatasets/master/csv/datasets/AirPassengers.csv"
    s = requests.get(url).content
    df = pd.read_csv(io.StringIO(s.decode('utf-8')), nrows=10, index_col=0)
  • map()

    将函数应用于 Series 的每个元素,支持 lambda 函数或映射表。

    frame = pd.DataFrame(np.random.randn(4, 3), columns=list('bde'), index=['India', 'USA', 'China', 'Russia'])
    changefn = lambda x: f'%.2f' % x
    frame['d'].map(changefn)
  • apply()

    对 Series 中的每个元素应用函数,支持多线程加速。

    fn = lambda x: x.max() - x.min()
    frame.apply(fn)
  • isin()

    过滤数据帧,保留满足条件的行。

    filter1 = df["value"].isin([112])
    filter2 = df["time"].isin([1949.000000])
    df[filter1 & filter2]
  • copy()

    创建数据副本,避免操作影响原始数据。

    data = pd.Series(['India', 'Pakistan', 'China', 'Mongolia'])
    new_data = data.copy()
    new_data[1] = 'Changed value'
    print(new_data)
    print(data)
  • select_dtypes()

    根据数据类型筛选特定列。

    df = pd.read_csv('data.csv')
    df.select_dtypes(include='float64')

  • 数据分析的高效工具

    Pandas 提供了强大的数据操作功能,适用于表格数据、时间序列和多维矩阵等多种数据类型。其灵活的索引操作和聚合功能,使数据处理更加高效和直观。

    上一篇:正则表达式中(?:)的巨大作用
    下一篇:skip-gram模型结构

    发表评论

    最新留言

    不错!
    [***.144.177.141]2025年04月05日 18时45分23秒