美文网首页
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

    摘要 nan和0之间转换 resample('M').pad() conn = cx_Oracle.connect...

  • Python积累

    从基因组注释中提取转录因子 字符串find使用+异常值处理 今天又写了一个小脚本,从基因组的注释文件中筛选所有可能...

  • Py3.x和Py2.x区别

    偶尔遇到的时候做的一些记录,贵在积累 总有一些新手在学习Python前纠结是买Python3还是2纠结,搞不懂为什...

  • python知识积累

  • python技巧积累

    数组逐行替换 生成多维数组,元素随机 dict按照key排序生成list、dict按照value排序生成list 链接

  • python 用法积累

    print 格式化输出 click to 格式化输出 json使用实例 re使用实例 one eval 和 jso...

  • python 积累3

    摘要 1. 线性回归简单归纳 2. 不提醒warning 3.获取当前工作路径 4.Dataframe 行列 5....

  • python积累1

    摘要 读特定sheet特定行的excel,设定时间轴 时间轴索引 更改非交易日的调仓时间 找离得最近的rollin...

  • python 积累5

    摘要 1. 模块同一个名字 可以放在不同文件夹下import 包名(文件夹名).模块名(py名).函数名 2.ma...

  • python 积累4

    摘要 1.时间序列用字典存储 方便之处在于不用切片,书写时直接写变量即可 2.加布尔变量表示 方便之处在于加仓减仓...

网友评论

      本文标题:python积累2

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