Pandas使用小技巧,让你快速实现数据处理

Pandas使用指南

  • pandas修改数据

    >>> df.loc[1,'name'] = 'aa' #修改index为‘1’,column为‘name’的那一个值为aa。
    >>> df.loc[1] = ['bb','ff',11] #修改index为‘1’的那一行的所有值。
    >>> df.loc[1,['name','age']] = ['bb',11]    #修改index为‘1’,column为‘name’的那一个值为bb,age列的值为11。
    
  • csv 保存数据乱码解决

    df.to_csv('test.csv',encoding='utf_8_sig')
    
  • 更换索引

    df['index'] = list(range(1000))
    df = df.set_index(['index'])
    
  • 重置索引

    # drop = False默认保留原来的索引,drop = True删除原来的索引,inplace = True在原来的数据上做更改
    new_df3.reset_index(drop=False,inplace=False)
    
  • 更换列名

    # 原bg_id 更换为lawyer_id
    df.rename(columns={
          
          'bg_id':'lawyer_id'},axis=1)
    
  • DataFrame设置索引

    # dataframe 新增一列
    data3['index'] = range(1,75164)
    # 设置索引
    data3.set_index(['index'])
    
  • 将DataFrame存入到MongoDB中

    # DataFrame存入mongodb
    import json
    conn2 = MongoClient('localhost',27017)
    db2 = conn2['company']
    coll2 = db2['company_qinquan']
    # data3 为dataframe
    coll2.insert(json.loads(data3.T.to_json()).values())
    
  • pandas 时间类型数据

    def pandas_time_stamp(cls,str_time):
            ''' 字符串类型时间转pandas的pandas._libs.tslibs.timestamps.Timestamp类型'''
            time_array = time.strptime(str_time, '%Y-%m-%d %H:%M:%S')
            time_stamp = time.mktime(time_array)
            str_time_ = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time_stamp))
            # return pd.Timestamp(str_time_).date() # 获取年月日
            return pd.Timestamp(str_time_)  # 获取年月日时分秒
    
  • NaN类型的数据(数值为空)

    from math import isnan
    # 筛选出NaN值的数据,只对浮点型数据有效,对整数类型无效
    df[df['A'].isnull()]
    # 判断是否是NaN
    isnan(x) # True or False
    
  • NaT 类型的数据(时间为空)

```python
# 判断类型是否为空
pd.isna(x)  # True or False
```
  • 对某一列空值进行填充

    df_user3['tag_type'].fillna(0,inplace=True)
    
  • df 更换某一列的数据类型

    # df[[‘col_name’]]= df[[‘col_name’]].values.astype(int/float/str)
    # 更换成整数类型
    df['tag_type']=df['tag_type'].values.astype(int)
    
  • pandas 拼接多个相同列名的数据帧

    # 是一个列表类型的参数-元素是多个数据帧
    end_df = pd.concat([df1,df2..........])
    
  • 删除行

    # 筛选出a列空行的索引
    index = df[df['A'].isnull()].index
    # 将其删除,删除行需指定axis=0 ,为行
    df.drop(labels=index ,axis=0, inplace=True)
    
  • 删除列

    # 删除列,labels可以是列代表删除多列,也可以指定列名删除一列, 需指定axis=1 ,为列
    df.drop(labels=['group_chat_count','private_chat_send_count'],axis=1, inplace=True)
    
  • 操作数据帧两列生成新的一列

    # 处理函数
    def process(date_time, pay_time):
        flag = 0
        if not pd.isnan(date_time) and not pd.isnan(pay_time):
            flag = 1
        return flag
    
    # df 调用处理函数操作两列生成新的列
    df['transform_num'] = df.apply(lambda row: process(row['data_time'], row['pay_time']), axis=1)
    
  • 将df 转化成字典类型数据

    # 转化成字典嵌套字典形式
    df = df.to_dict()
    # 输出
    {
          
          
     'camp_id': {
          
          0: 100695,1: 100695, 2: 100695,3: 100695,4: 100695, 5: 100695,6: 100695},
     'term_id': {
          
          0: 105712,1: 105712,2: 105712,3: 105712,4: 105712,5: 105712,6: 105712}
    }
    -----------------------------------------------------------------------------------
    # 转化成字典嵌套列表
    df = df.to_dict(orient = 'list')
    
    # 输出
    {
          
          
        'camp_id': [100695, 100695, 100695, 100695, 100695, 100695, 100695],
     	'term_id': [105712, 105712, 105712, 105712, 105712, 105712, 105712]
    }
    
  • 将pandas数据帧转换成矩阵

    print(df4)
    -----------------------------------------------------------------------------------------------------------------------------
    食品	互联网	电子电器	文创	工程机械	餐饮娱乐	其他	连锁经营	建材家居	药品	...	《中华人民共和国劳动法》	《最高人民法院关于民事诉讼证据的若干规定》	《中华人民共和国种子法》	《中华人民共和国公司法》	《中华人民共和国劳动合同法》	《中华人民共和国民法通则》	《中华人民共和国行政许可法》	《中华人民共和国公共图书馆法注释版》	《最高人民法院关于确定民事侵权精神损害赔偿责任若干问题的解释》	money
    0	1	0	0	0	0	0	0	0	0	0	...	0	0	0	0	0	0	0	0	0	1
    1	1	0	0	0	0	0	0	0	0	0	...	0	0	0	0	0	0	0	0	0	1
    2	1	0	0	0	0	0	0	0	0	0	...	0	0	0	0	0	0	0	0	0	0
    3	0	1	0	0	0	0	0	0	0	0	...	0	0	0	0	0	0	0	0	0	0
    4	0	0	1	0	0	0	0	0	0	0	...	0	0	0	0	0	0	0	0	0	0
    ...	...	...	...	...	...	...	...	...	...	...	...	...	...	...	...	...	...	...	...	...	...
    127748	0	0	0	0	0	0	0	0	0	0	...	0	0	0	0	0	0	0	0	0	1
    127749	0	0	0	1	0	0	0	0	0	0	...	0	0	0	0	0	0	0	0	0	1
    127750	0	0	0	1	0	0	0	0	0	0	...	0	0	0	0	0	0	0	0	0	0
    127751	0	0	0	1	0	0	0	0	0	0	...	0	0	0	0	0	0	0	0	0	1
    127752	0	0	0	1	0	0	0	0	0	0	...	0	0	0	0	0	0	0	0	0	1
    -----------------------------------------------------------------------------------------------------------------------------
    import numpy as np
    import pandas as pd
    # 将dataFrame转换成矩阵
    matrix = np.asmatrix(df4.values)
    print(matrix)
    -----------------------------------------------------------------------------------------------------------------------------
    matrix([[1, 0, 0, ..., 0, 0, 1],
            [1, 0, 0, ..., 0, 0, 1],
            [1, 0, 0, ..., 0, 0, 0],
            ...,
            [0, 0, 0, ..., 0, 0, 0],
            [0, 0, 0, ..., 0, 0, 1],
            [0, 0, 0, ..., 0, 0, 1]], dtype=int64)
    

猜你喜欢

转载自blog.csdn.net/m0_49501453/article/details/124442538