Loading

Pandas-01-基本数据操作

  • 导入数据
# 读取文件
data = pd.read_csv("./data/stock_day.csv")

# 删除一些无用列
data = data.drop(["ma5", "ma10", "ma20", "v_ma5", "v_ma10", "v_ma20"], axis=1)
image-20210312104037221

1. 索引操作

  • 直接行列索引(先列后行)

    # 先列后行
    data["open"]["2018-02-27"]  # 23.53
    
    # 取前两行的high和low
    data[0:2][["high", "low"]]
    
    # 不支持的操作
    # 先行后列
    data["2018-02-27"]["open"]
    # 切片
    data[:1, :2]
    
  • 使用loc和iloc索引

    # loc:仅支持行列名索引
    data.loc["2018-02-27":"2018-02-14", "open":"close"]
    
    # iloc:通过下标进行索引
    data.iloc[:3, :5]  # 前3行,前5列
    
  • 使用ix组合索引

    在pandas 0.20.0版本中此方法被废弃,使用.iloc和.loc组合索引。

    获取第1-4天,["open", "close", "high", "low"]这四个指标的结果

    # 使用ix进行下标和列名组合索引
    data.ix[0:4, ["open", "close", "high", "low"]]
    
    # 推荐使用loc和iloc组合
    data.loc[data.index[0:4], ["open", "close", "high", "low"]]
    # 或
    data.iloc[0:4, data.columns.get_indexer(["open", "close", "high", "low"])]
    

2. 赋值操作

# 直接修改原来的值
data["close"] = 1
# 或者
data.close = 1

3. 排序

3.1. DataFrame排序

  • 使用dataframe.sort_values(by=,ascending=)

    • 指定单个键或多个键进行排序
    • 参数:
      • by:指定排序参考的键
      • ascending:默认升序
        • ascending=True:升序
        • ascending=False:降序
    # 根据开盘价降序排序
    data.sort_values(by="open", ascending=False).head()
    
    # 根据开盘价和最高价升序排序
    data.sort_values(by=["open", "high"], ascending=True).head()
    
  • 使用dataframe.sort_index()以索引进行排序

    默认升序,同样可以指定ascending=False来进行降序排序

    # 以行(日期)进行升序排序
    data.sort_index()
    

3.2. Series排序

  • 使用series.sort_values(ascending=)以列排序

    data["high"].sort_values().head()
    
  • 使用series.sort_index(ascending=)以索引排序

    data["high"].sort_index(ascending=False).head()
    
posted @ 2021-05-02 14:53  七年i  阅读(93)  评论(0)    收藏  举报