python积累2

摘要

  • 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/[email protected]: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)