• 第十四课:Pandas(2)行情数据处理,DataFrame合并去重以及计算涨跌幅


    https://www.bilibili.com/video/BV1Kx411Z7eu?t=750

     

    import  pandas as pd
    import os
    curren_dir=os.path.dirname(os.path.dirname(__file__))
    print(curren_dir)
    print(os.path.dirname(__file__))
    df=pd.read_excel('test20210428_Test.xlsx')
    #axis=0或者1 纵向排序还是横
    #f=df.sort_values(by='tradate',ascending=False)
    #对数据进行排序,用到了sort_values函数,by参数可以指定根据哪一列数据进行排序,ascending是设置升序和降序(选择多列或者多行排序要加[],把选择的行列转换为列表,排序方式也可以同样的操作)。
    #inplace=True 原则替换
    #将NAN值转换为0
    
    fillna=df.fillna(0)
    df.sort_values(by=['tradate'],ascending=True,inplace=True)
    df['close11']=df['close'].shift(1)
    print(df)
    #删除列
    df.drop(['close11'],axis=1,inplace=True)
    print(df)
    #涨跌 diff的参数只有一个periods,控制偏移位置,即与间隔几个的差值(可以为负数,默认为1)
    df['shift_1']=df['close'].shift(1)
    print(df)
    df['涨跌']=df['close'].diff(1)#等价
    df['涨跌1']=df['close']-df['shift_1']#等价
    print(df)
    #涨跌幅度
    df['涨跌幅']=df['close'].pct_change(-1)
    df['涨跌幅1']=(df['close']-df['shift_1'])/df['shift_1']
    print(df)
    #累加 需要按日期升序
    df['volume_cum']=df['volume'].cumsum()
    print(df[['tradate','volume','volume_cum']])
    
    #累乘 需要按日期升序
    df['volume_prod']=(df['涨跌幅']+1).cumprod()
    print(df[['tradate','涨跌幅','volume_prod']],)
    import pandas as pd
    data = [12,5,8,2,8,2,8,2,8,2,8,5,84]
    data1 = [12,5,8,56,57,58,59,22,84,24,85,56,87]
    df1=pd.DataFrame(data,columns=['num'])
    df2=pd.DataFrame(data1,columns=['num'])
    # print(data1)
    df=pd.DataFrame(data,columns=['num'])
    df.sort_values(by=['num'],ascending=1,inplace=True) #1升序排序 0降序
    #排序函数
    df['cum']=df['num'].cumsum()
    df['prod']=df['num'].cumprod()
    print(df.sort_values(by=['num','cum'],ascending=[1,0]) )#按多列排序
    #多个DataFrame 上下合并操作,append操作
    df3=df1.append(df2) #index不连续index是可以重复的,需要得新设置index索引值
    df4=df1.append(df2,ignore_index=True)#ignore_index 重新设置index
    print(df4)
    #对数据进行去重
    
    df4.drop_duplicates(subset=['num'],
    keep='first',#first 只保留第一行出现的值,last最后一行的值 ,false一行都不保留
    inplace=True
    )
    print('first22',df4)

    pandas删除满足条件所在的行

     df_clear = df.drop(df[df['predict']=='####'].index)

    # 多个条件

    df_clear = df.drop(df[(df['predict']=='####') | (df['predict']=='车位充足')].index)

     数据合并

    res = pd.merge(res, mana_type_size, on=['MNG_ID', 'FND_TYPE'], how='left')
    多个条件同时满足,&,或关系用|
    data_mng = df[(df['MNG_ID'] == i['MNG_ID']) & (df['MANA_CODE'] == i['MANA_CODE'])].to_dict('records')

    pandas获取groupby分组里最大值所在的行

    https://blog.csdn.net/mappy93/article/details/79319506/
    # dg=df.groupby('MNG_ID').apply(lambda t:t[t.RESI_DATE==t.RESI_DATE.max()])
    df_gy=df.iloc[df.groupby('MNG_ID').apply(lambda x: x['RESI_DATE'].idxmax())]

    1、python中数据框求每列的最大值和最小值

    df.min()
    df.max()

  • 相关阅读:
    SQL 函数以及SQL 编程
    查询练习(四十五道题)
    SQL server 高级查询
    SQL server 数据库 操作及简单查询
    T-SQL 语句
    SQL
    表单验证、实则表达式、事件
    视频插入代码
    插入地图
    网页布局小练
  • 原文地址:https://www.cnblogs.com/gina11/p/14736158.html
Copyright © 2020-2023  润新知