pandas常用方法及python列表推导式

目录

一、pandas的索引切片

二、DataFrame的行列的增添加和删除及检查

1、添加

2、删除 

3、检查

三、分组聚合排序

四、表的连接

五、对列和行使用自定义函数

六、python的列表推导式


Pandas 是一个 Python 数据分析库,提供快速、灵活和表达力强的数据结构,旨在使“关系”或“标签”数据的操作既简单又直观。Pandas 适用于多种类型的数据,包括:

  • 与 SQL 或 Excel 表类似的表格数据,具有行和列。
  • 有序和无序(不固定)的时间序列数据。 -任意矩阵数据(均匀类型)与异构数据。
  • 其他任意形式的统计数据集。

Pandas 的两个主要数据结构是 Series(一维数组)和 DataFrame(二维表)。这两种数据结构使得在 Python 中处理数据变得非常简单和直观。

主要特点

  1. 数据导入和导出:Pandas 支持多种文件格式,如 CSV、Excel、HDF5 和 SQL 数据库,可以轻松地导入和导出数据。

  2. 数据清洗和准备:Pandas 提供了各种功能来处理缺失数据、重复数据、数据类型转换等。

  3. 数据操作:Pandas 允许你进行数据集的切片、切块、聚合、透视和重塑。

  4. 数据分析:Pandas 提供了丰富的函数库来进行描述性统计和复杂的分析。

  5. 时间序列分析:Pandas 有专门用于处理时间序列数据的功能,如日期范围生成、频率转换、移动窗口统计等。

  6. 性能优化:Pandas 是高效的,可以轻松处理大型数据集。

一、pandas的索引切片

创建DataFrame

import pandas as pd
df = pd.DataFrame([['W', 23, 90], ['M', 35, 75], ['W', 18, 82], ['M', 14, 93]],
                      columns=['gender', 'age', 'score'],
                      index=['小强', '小亮', '小刚', '小明'])

loc和iloc的用法 

loc 允许你通过行标签和列名进行索引。它可以接受两个单个的索引器或一个由两个索引器组成的元组。

iloc 允许你通过行号和列号进行索引,它使用整数索引,范围从0到len(df.index)-1(对于行)和len(df.columns)-1(对于列)。

    """loc 和 iloc的用法"""
    '''loc'''
    # 取所有行所有列
    print(df.loc[:, :])
    # 取某一行某一列
    print(df.loc['小红', 'age'])
    # 取某一行所有列
    print(df.loc['小红', :])
    # 取所有行一列
    print(df.loc[:, 'age'])
    # 取所有行前两列
    print(df.loc[:, :'age'])
    # 取前三行所有列
    print(df.loc[:'小兰', :])

    '''iloc'''
    # 取所有行所有列
    print(df.iloc[:, :])
    # 取2,3行,第二列
    print(df.iloc[1:3, 2:3])

    '''布尔索引'''
    # 年龄为F的行
    print(df.loc[df['gender'] == 'F', :])
    # 年龄大于20的行
    print(df.loc[df['age'] >= 20, :])

二、DataFrame的行列的增添加和删除及检查

还是用上面的DataFrame

1、添加

    # 添加calss列
    df.loc[:, 'class'] = [1, 2, 3, 4]
    # 添加test1列,全部为1
    df.loc[:, 'test1'] = 1
    # 添加test2列,数值为test1的两杯
    df['test2'] = 2 * df['test1']
    print(df)

    print('____________')
    # 添加一行
    df.loc['小周'] = ['M', 15, 87, 5, 1, 3]
    print(df)
    print('____________')
    # 两个DataFrame拼接
    df2 = pd.DataFrame([['M', 14, 93, 4, 1, 2]],
                       columns=['gender', 'age', 'score', 'class', 'test1', 'test2'],
                       index=['小明', '小张', '小靓', '小蒋'])
    df = pd.concat([df2, df], axis=0)
    print(df)

2、删除 

    # 删除重复的行
    df = df.drop_duplicates()
    print(df)
    print('____________')
    # 删除缺失的行
    df = df.dropna()
    # 删除列
    df = df.drop(['test1', 'test2'], axis=1)
    print(df)
    print('____________')

3、检查

 # 检查缺失值和填充缺失值
    # 检查缺失值
    print(df.isnull())
    # 填充缺失值
    print(df.fillna(0))

三、分组聚合排序

还是用上面的DataFrame

# 以性别分组求平均值
    mean = df.groupby('gender').mean()
    # 以性别分组年龄的最大值
    max = df.groupby('gender')['age'].max()
    # 以性别分组,求最低分
    min = df.groupby('gender')['score'].min()
    # 对各列求和
    sum =  df.sum()
    # 按年龄生序排序
    df.sort_values(by='age', ascending=True, inplace=True)
    print(df)

四、表的连接

pd.merge 用于数据库风格的合并操作,它可以将两个DataFrame对象按照指定的键(key)或索引合并在一起。这类似于SQL中的JOIN操作

创建Dataframe

 # 创建两个示例DataFrame
    df1 = pd.DataFrame({
        'key': ['A', 'B', 'C', 'D'],
        'value': [1, 2, 3, 4]
    })

    df2 = pd.DataFrame({
        'key': ['B', 'D', 'D', 'E'],
        'value': [5, 6, 7, 8]
    })

连接

# 内连接(inner join),只保留两个DataFrame中都有的键,key
    merged_inner = pd.merge(df1, df2, on='key', how='inner')

    # 左连接(left join),保留左DataFrame中的所有键
    merged_left = pd.merge(df1, df2, on='key', how='left')

    # 右连接(right join),保留右DataFrame中的所有键
    merged_right = pd.merge(df1, df2, on='key', how='right')

五、对列和行使用自定义函数

pandas 中的 apply 函数是一个非常强大的工具,它允许你对 DataFrame 或 Series 中的单个列或所有列应用一个函数。这个函数可以是 Python 的内置函数,也可以是用户自定义的函数。apply 函数可以在行或列上应用,也可以在 DataFrame 的整个数据上应用。

创建Dataframe

 # 创建一个示例 DataFrame
    df = pd.DataFrame({
        'A': [1, 2, 3],
        'B': [4, 5, 6],
        'C': [7, 8, 9]
    })

自定义函数

# 定义一个自定义函数
def custom_function(x):
    if x['A'] + x['B'] > 5:
        return 'High'
    else:
        return 'Low'

操作

    # 对 DataFrame 的每个元素应用一个平方函数
    squared_df = df.apply(lambda x: x ** 2)
    print(squared_df)
    # 对 DataFrame 的每一列应用一个函数,计算每个元素的和大于 10 的列
    columns_sum = df.apply(lambda col: col.sum() > 10, axis=0)
    print(columns_sum)
    # 对 DataFrame 的每一行应用一个函数,计算每一行的和
    row_sums = df.apply(lambda row: row.sum(), axis=1)
    print(row_sums)
    print('_____________')
    # 对 DataFrame 的每一行应用自定义函数
    df['category'] = df.apply(custom_function, axis=1)
    print(df)
    #

六、python的列表推导式

列表推导式(list comprehension)是 Python 中一种优雅且简洁的构建列表的方法。它允许你通过对一个序列进行操作并筛选出符合条件的元素来创建新的列表。

自定义函数

def fun1(x):
    if x > 3:
        return 'High'
    else:
        return 'Low'

常见操作 

    # 创建一个平方数
    squares = [x**2 for x in range(10)]
    print(squares)

    # 对列表中的每个元素应用一个函数
    number = [1,2,3,4,5]
    numbers = [fun1(x) for x in number]
    print(numbers)

    # 过滤列表中的元素(取偶数)
    number = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    numbers = [x for x in number if x % 2 == 0]
    print(numbers)

    numbers = [1, 2, 3, 4, 5]
    signs = ['+' if x % 2 == 0 else '-' for x in numbers]
    print(signs)
    # 结果是 ['-', '+', '-', '+', '-']

  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

依恋、阳光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值