Python---pandas使用

Pandas是一个强大的Python库,用于数据分析和数据处理。它提供了高效的数据结构和数据操作工具,特别适用于处理结构化数据。

下面是一些常用的Pandas使用技巧和示例:

  1. 导入Pandas库:

    import pandas as pd
    

  2. 创建Series(序列)对象:

    s = pd.Series([1, 3, 5, np.nan, 6, 8])
    

  3. 创建DataFrame(数据框)对象:

    data = {'name': ['Alice', 'Bob', 'Charlie'],
            'age': [25, 30, 35],
            'city': ['New York', 'Seattle', 'Los Angeles']}
    df = pd.DataFrame(data)
    

  4. 读取保存数据文件:

    # 读取
    df = pd.read_csv('data.csv')
    # 保存
    df.to_csv('data.csv')

  5. 查看数据:

    df.head()     # 查看前几行数据,默认为前5行
    df.tail()     # 查看后几行数据,默认为后5行
    df.shape      # 查看数据的行数和列数
    df.info()     # 查看数据的基本信息
    df.describe() # 查看数据的描述性统计信息
    

  6. 数据选择和切片:

    df['column_name']         # 选择某一列
    df[['col1', 'col2']]      # 选择多列
    df.loc[row_indexer]       # 通过行索引选择数据
    df.loc[row_indexer, column_indexer]  # 通过行索引和列索引选择数据
    df.iloc[row_indexer]      # 通过行位置选择数据
    df.iloc[row_indexer, column_indexer] # 通过行位置和列位置选择数据
    

  7. 数据筛选:

    df[df['column_name'] > value]  # 筛选出某列大于某个值的数据
    df.query('column_name > value') # 使用query()方法筛选数据
    df[(df['column1'] > value1) & (df['column2'] < value2)]  # 使用逻辑运算符筛选数据
    

  8. 缺失值处理:

    df.dropna()     # 删除包含缺失值的行
    df.dropna(axis=1)  # 删除包含缺失值的列
    df.fillna(value)  # 填充缺失值为指定值
    res['value_x'] = res['value_x'].fillna(0)  # 填充某一列的缺失值为指定值
    

  9. 数据排序:

    df.sort_values(by='column_name')  # 按某一列排序数据
    df.sort_values(by=['col1', 'col2'])  # 按多列排序数据
    df.sort_index()  # 按索引排序数据
    

  10. 数据分组和聚合:

    df.groupby('column_name').mean()   # 按某一列进行分组,并计算平均值
    df.groupby(['col1', 'col2']).sum() # 按多列进行分组,并计算总和
    
  11. 将时间字符串列转换为时间类型的
    df['date'] = pd.to_datetime(df['date'])
  12. 以一列为条件判断,生成另一列的值(判断是否为节假日)
    def is_workday(date):
        return np.is_busday(np.datetime64(date, 'D'),
                            holidays=['2023-05-01', '2023-05-02', '2023-05-03', '2023-06-22', '2023-06-23', '2023-06-24',
                                      '2023-09-29', '2023-09-30', '2023-10-01', '2023-10-02', '2023-10-03', '2023-10-04',
                                      '2023-10-05', '2023-10-06'])
    
    
    df0 = pd.read_csv('data.csv', low_memory=False)
    df0['date'] = pd.to_datetime(df0['date'])
    df0.loc[df0['date'].apply(is_workday), 'holiday'] = 0
  13. 对某一列去重
    按照interval_start列进行去重,并保留device_time列时间早的一个值
    df = res.sort_values('device_time').drop_duplicates('interval_start', keep='last')
    '''
    subset:指定用于判断重复的列名或列名列表。默认为 None,表示考虑所有列。如果指定了列名或列名列表,函数将根据这些列的值来判断是否为重复行。
    keep:指定保留哪个重复行,默认为 'first'。可选的值有:
    'first':保留第一个出现的重复行,删除后续的重复行。
    'last':保留最后一个出现的重复行,删除前面的重复行。
     False:删除所有重复行。
    inplace:是否在原地修改 DataFrame,默认为 False。如果设置为 True,则会直接在原 DataFrame 上进行修改,而不返回新的 DataFrame
    '''

  14. 合并两个Datafram
res = pd.merge(df0 df1, left_on='interval_start', right_on='interval_start', how='outer', sort=True)
'''
left:左侧的DataFrame。

right:右侧的DataFrame。

on:指定用于合并的列名或列名列表。如果左右两个DataFrame的列名不同,可以使用left_on和right_on参数分别指定左右DataFrame的列名。

left_on:左侧DataFrame用于合并的列名或列名列表。

right_on:右侧DataFrame用于合并的列名或列名列表。

how:指定合并方式,默认为'inner'。可选的合并方式有:

'inner':内连接,保留两个DataFrame中共有的行。

'outer':外连接,保留两个DataFrame中的所有行,缺失值用NaN填充。

'left':左连接,保留左侧DataFrame的所有行。

'right':右连接,保留右侧DataFrame的所有行。

suffixes:用于区分重复列名的后缀,默认为('_x', '_y')。

sort:根据合并键对结果进行排序,默认为False。

validate:验证合并方式的有效性,默认为None。可选的值有'one_to_one'、'one_to_many'、'many_to_one'和'many_to_many'
'''

这些示例只是Pandas库的一部分功能,Pandas还提供了很多其他强大的功能,如数据重塑、数据合并、时间序列处理等。你可以通过查阅Pandas官方文档来了解更多详细的用法和示例。

  • 21
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值