美文网首页
python积累2

python积累2

作者: 黄yy家的jby | 来源:发表于2018-12-13 10:20 被阅读0次

    摘要

    • nan和0之间转换
    • resample('M').pad()
    • conn = cx_Oracle.connect(); sql = ''' ... '''; cur.execute(sql);
      temp = cur.fetchall(); df = pd.DataFrame(temp)
    • a = df.loc[ ~df[columns].isin(value)] ]
    • if not temp.empty:
    • c = dict(a, **b)
    • index = series_industry.index & series_manager.index
      series_manager_yield = series_manager[index]
    • temp = df[df.G4 == 1]

    1. nan和0之间转换

    #赋值nan和赋值[]是不一样的结果
    df[df == 0] = np.nan  #0 转化为nan
    df.loc[:,'G'].fillna(0,inplace=True)
    #只在G那一列进行fillna填充成0,nan在内部默认没有值
    
    #dataframe 有自己的函数isnull()      **生成随机数np.random.randn(10,6)**
    df = pd.DataFrame(np.random.randn(10,6))
    
    df.iloc[1:3,1] = np.nan
    df.iloc[5,3] = np.nan
    df.iloc[7:9,5] = np.nan
    
    df[df.isnull()] = 0
    df.iloc[:,1][df.isnull()] = 0
    

    2. 日期对齐

    a = pd.read_excel("煤炭综合价格指数.xls",sheetname=1)
    a.set_index("date", inplace=True)
    b=a.resample("M").pad()
    #对于datatime可以直接进行resample处理
    #pad表示填充
    

    resample 用法

    3. 读TXT字典格式文件

    file_list = ['中信行业一级', '中信行业二级', '中信行业三级 ', '申万行业二级', '申万行业三级']
    
    for file in file_list:
        f = open('{0}.txt'.format(file))
        data = pd.read_table(f,header=None,index_col=0)
        f.close()
        
        print(file+':')    
        print(data[1].to_dict())
        print('')
        print('')
    

    4. 数据库的常用操作

    conn = cx_Oracle.connect('windquery/wind2010query@10.2.89.132:1521/winddb')
    sql = ''' select F1_0001, F16_0001 from TB_OBJECT_0001  '''
    cur.execute(sql)
    temp = cur.fetchall()
    df = pd.DataFrame(temp,columns=['wind_id','security_id'])
    

    5. 查找对应的index

    a = df[df == '07'].index
    a = df[ df[columns].isin(value)] ]
    a = df.loc[ ~df[columns].isin(value)] ]
    

    查找条件索引

    6. 条件判断中的应用

    if not temp.empty:
    #如果不为空
    if manager_id not in dic_fund_manager:
    if not (manager_id in dic_fund_manager):
    #如果不在其中,两者都可以
    #in 后的内容可以为list,series,元组,字符串等
    

    7. 字典

    #创建空的,然后用a[] = 来给key赋value
    a ={}
    a['test'] = 1
    
    a.key() #是所有的key
    a.value() #是所有的value
    for i in a
      # i 是遍历 a中的key
    
    list_a = [1,2,3,4]
    s = pd.Series(list_a)
    s = s/sum(s)
    dict(s)
    # 直接用dict也可创建字典,根据index作为key
    
    a = {'guoguo1':{},'guoguo2':'2','guoguo5':1000}
    b= {'guoguo1':1,'guoguo3':'3','guoguo2':'5'}
    c = dict(a, **b)
    #有重复的时候,以后面为准
    

    8. 交并补

    a = pd.Series([1,2,3,4])
    b = pd.Series([2,3,4,5])
    c = a & b   #c 为 ab的交集
    
    #有时候的时间会有错开,要算相关性等需要对齐时间。
     series_industry = pd.Series(dic_index_yield[industry])
     index = series_industry.index & series_manager.index
     # 取相同时间  此为交集
     series_manager_yield = series_manager[index]
     series_industry_yield = series_industry[index]
     a = series_manager_yield.corr(series_industry_yield)
    
    c = list(set(a).intersection(set(b))) #交集
    c = list(set(a).union(set(b))) #并集
    c = list(set(b).difference(set(a))) # 差集
    

    9. 写文件

     writer = pd.ExcelWriter('***.xlsx')
     for date in dic_corr_rank:
         df = ...
         df.to_excel(writer, sheet_name=date, encoding='gbk')
     writer.save()
    

    10.排名百分比

    a = pd.Series([3,2,1,4,10])
    b = a.rank(ascending=False)
    c = b/len(b)
    #rank输出的即为排名,倒序表示占前百分之多少
    

    11. dataframe的切片和判断

    temp = df[df.G4 == 1]
    #可以直接用.列名来判断,这样的得到的temp是满足条件的df
    #注意他的列名不能以数字开头
    

    相关文章

      网友评论

          本文标题:python积累2

          本文链接:https://www.haomeiwen.com/subject/djfvhqtx.html