• pandas 模块 和 datatable 模块


    pandas 模块

    使用 to_patquet 操作 df 对象

    # 使用 to_patquet 操作 df 对象
    写入
    import io
    
    buffer = io.BytesIO()
    dd = df.to_parquet(buffer)
    buffer.seek(0)
    rd5.hset("future_1m", key, buffer.read())
    
    读取
    dd = rd5.hget("future_1m_data", key)
    dt = pd.read_parquet(io.BytesIO(dd))
    

    pandas 读取中文乱码

    # pandas 读取中文乱码
    BO = pd.read_csv(r'D:333333555555BO.csv', encoding='unicode_escape')
    # pandas 写入中文乱码
    df.to_csv(file_name3, encoding="utf_8_sig")
    

    pandas 把datetime 转换为指定格式

    # pandas 把datetime 转换为指定格式
    data['month'] = data['time'].apply(lambda x:x.strftime('%Y-%m-d'))
    

    将 df 对象转化为字典格式的两种方法

    # 将 df 对象转化为字典格式的两种方法
    da = df.to_dict(orient='records')
    das = df.to_json(orient='records')
    
    # 按照指定的方向转换
    >>> df
       col1  col2
    0     1     3
    1     2     4
    >>> [df.to_dict(orient='index')]
    [{0: {'col1': 1, 'col2': 3}, 1: {'col1': 2, 'col2': 4}}]
    >>> df.to_dict(orient='records')
    [{'col1': 1, 'col2': 3}, {'col1': 2, 'col2': 4}]
    
    # df 对象中指定两列形成字典
    df[['a', 'b']].set_index('a').to_dict()['b']
    

    pandas 常见使用方法

    pandas
    pandas 更改索引列名
    df.index.name = 'name'
    
    # 找出所有有缺失值的行
    df[df.isnull().values==True]
    
    # 按照索引排序
    df.sort_index()
    参数:
    axis:0:按行索引进行排序,1 按列索引进行排序
    ascending:默认True 升序排列,False 降序排列
    inplace: 是否排序之后的数据直接替换原来的数据框,默认是 False
    by:按照某一列或己列数据进行排序,但是by 参数貌似不建议使用
    
    # 索引去重
    df[~df.index.duplicated()]
    
    # 删除重复数据
    df['C'].drop_duplicates()
    
    # 获取某一列的唯一值
    df['name'].unique()
    
    # 索引重命名
    df = pd.DataFrame({'A': [1, 2, np.NaN,  3], 'B': [2, 3, 4, np.NaN], 'C': [4, np.NaN, 3, 4]}, index=['a', 'c', 'd', 'e'])
    
    df = df.reindex(['a', 'd', 'e'])
    
    使用reindex 后,会只保留 reindex 中出现的索引,如果之前索引中有,就继续继承之前索引中的值,如果之前索引中没有,新生成的df 对象,会有这一行,但是显示为空值
    
    # 填充空值
    df.fillna()
    参数:
    value:直接使用值填充,但是填充的时候就不需要指定 method 和 axis
    method:指定按照哪一个值填充 ffill/bfill  按前一个填充/按后一个填充
    axis:0 按列行填充,1 按列填充
    inplace:是否直接在原表中修改
    案例: ffill/0 表示按前一行的值进行填充    ffill/1 表示按前一行的值进列填充
    
    # 对取出来的单独一列进行命名
    df[column].name = 'name'
    
    # pandas 中 df 对象 rolling 的使用
    df["10D"] = df["acc_net_value"].rolling(10).std() * 100    # 作用是可以获取从当前位置向前多少条数据
    
    # df 对象中,两列数据机算
    df["value_shift"] = df.apply(lambda x: (x["acc_net_value"] / x["value"]) - 1, axis=1)
    
    # isin  pandas  做筛选
    df['a'].isin([1])    # 返回 bool 对象
    df['a'][df['a'].isin([1])]    # 返回符合条件的值
    

    datatable 模块

    datatable 与 pandas 相似,但更侧重于速度和大数据支持
    
    # 安装
    pip install datatable
    
    # 读取数据
    import datatable as dt
    df_dt = dt.fread(path)
    
    优点:速度快,可以自动删除和分析绝大多数文本文件,zip压缩文档的下载数据,或URLs,读取Excel文件以及其他文件,可以自动删除分隔符,页眉,列类型以及引号规则等,可以多源读取数,包括文件,URL,shell,原始文本,存档和glob,急速多线程文件读取,显示读取文件的进度条,
    
    # Frame 转换
    numpy_df = df_dt.to_numpy()
    pandas_df = df_dt.to_pandas()    # D:333333555555
    
    # Frame 属性
    datatable_df.shape    # (nrows, ncols)
    datatable_df.names    # 列名 可以通过[:n] 的方式截取
    datatable_df.stypes    # 列类型 可以通过[:n] 的方式截取
    datatable_df.head()    # 默认前十行数据
    
    # 汇总统计信息
    datatable_df.sum()      datatable_df.nunique()
    datatable_df.sd()       datatable_df.max()
    datatable_df.mode()     datatable_df.min()
    datatable_df.nmodal()   datatable_df.mean()
    
    # 数据操作
    在datatable 中,所有操作最基础的媒介就是 方括号符号
    datatable_df[:3, :5]
    datatable_df[:4, 'tradingday']
    
    # Frame 排序
    datatable_df.sort('tradingday')
    
    # Frame 删除行/列
    del datatable_df[:, []]    # 可以删除多行多列,如果同事指定,被删除的地方用 NA 填充
    
    # 筛选
    df_dt[dt.f.adj_high_price > dt.f.adj_price, ['adj_price', 'unixtime']]  # 显示多行
    
    # Frame 存储
    datatable_df.to_csv('output.csv')
    
    
  • 相关阅读:
    KDD 2018 | 最佳论文:首个面向Facebook、arXiv网络图类的对抗攻击研究
    Distill详述「可微图像参数化」:神经网络可视化和风格迁移利器!
    T1330 最少步数(#Ⅱ- 8)(广度优先搜索)
    细胞个数题解(广度优先搜索)
    DRL前沿之:Benchmarking Deep Reinforcement Learning for Continuous Control
    DRL 教程 | 如何保持运动小车上的旗杆屹立不倒?TensorFlow利用A3C算法训练智能体玩CartPole游戏
    强化学习是如何解决问题的?
    深度强化学习泡沫及路在何方?
    ECCV 2018 | UBC&腾讯AI Lab提出首个模块化GAN架构,搞定任意图像PS组合
    纵览神经架构搜索方法
  • 原文地址:https://www.cnblogs.com/whkzm/p/14207319.html
Copyright © 2020-2023  润新知