python 知识点记录二

2017/5/4 numpy.array可以直接计算var mean sum等值
2017/5/8 print输出%符号 需要%% prin('%d%%'%d)
2017/5/15 anacoda在anacoda prompt中使用pip安装
2017/5/19 dataframe删除所有含Nan的列,DataFrame.dropna(axis=1)
2017/5/19 dataframe的拼接,使用pd.concat([df1,df2])
2017/5/25 与控制台进行交互可以通过raw_input来实现
2017/7/11 pd.merge()
2017/7/19 np.isnan(idx_000001_daily_ohlc_tr)前面加个波浪线为非的意思
2017/7/21 numpy.ndarray.tolist直接将array转换成list
2017/7/24 标量:只有大小,没有方向的量;与之相对的是矢量,如力矩就是矢量,数值相同,方向不同,两者就没有可比性;
2017/7/24 协方差与相关系数的关系:相关系数是消除了量纲影响的协方差,换句话说:协方差=相关系数*对应的标准差;协方差公式:Cov(X,Y)=E{[X−E(X)][Y−E(Y)]},通过相乘的方式使多变量之间建立起数值关系;协方差矩阵:两两变量之间的协方差组成
2017/7/25 dataframe的轴行用0,列用1
2017/7/25 PRICE_FIELDS = { 'open', 'close', 'high', 'low', 'limit_up', 'limit_down', 'acc_net_value', 'unit_net_value'}集合类型
2017/7/25 figsize是plot参数,可以设置图形大小
2017/7/26 查看类的属性使用__dict__
2017/7/27 sys.path.append('..')增加上一级目录,导入模块时,就可以导入父级模块
2017/7/28 pd.columns的数据类型为index类型,pd.columns.values为ndarray类型,转换成列表方法:pd.columns.tolist()
2017/7/28 result = df.sort(['A', 'B'], ascending=[1, 0])
2017/7/28 dataframe的列名为整数时,比如1,2,3访问1列时,可以使用df[1]
2017/8/4 dir可以直接使用在变量上,比如dir(regr),就可以看到它拥有的coef_变量
2017/8/4 机器学习中无法获得回归后详细信息,比如显著性结果,专门的统计包可以看到这些详细信息
2017/8/10 list.sort中的key=可以传入函数名
2017/8/10 时间格式转换成字符串格式,直接使用str函数,例如:str(dt.datetime.now())
2017/8/15 fig,axes=plt.subplots(nrows=2,ncols=1,sharex=True,sharey=False,figsize=(15,8))
ss.ix[display_start:display_end,['MA_20','MA_60','threshold']].plot(ax=axes[0])
idx_ret[display_start:display_end].plot(ax=axes[1])
axes[0].set_title('波动率')
axes[1].set_title('收益率')                                                                                                                                                          共用x轴,分成下上两图
2017/8/16 series也可使用value_counts(),记得加括号
2017/8/17 共享x轴,使用双y轴,左右刻度;使用twinx()函数
2017/8/18 列表可以直接相加,a=[1,2]+[3,4]结果为[1,2,3,4]
2017/8/21 字典合并使用update方法,dict1.update(dict2)
2017/8/24 dataframe排序后,索引一定要重置,即reset_index否则取值会出现问题
2017/9/5 内置round精度控制比np.round要好 举例:aa=1.3388800000000009
display(round(aa,2))
display(np.round(aa,2))                                                                                                                                                      1.34
1.3400000000000001
2017/9/6 matrix的优势在于矩阵运算,当需要矩阵运算时,考虑将数据转换成矩阵
2017/9/12 matrix的索引与数据框,ndarray格式完全不同,matrix[0][0][0]无论多少个[0]都是matrix格式,不可能只返回一个值
2017/9/18 talib.LN为对数函数
2017/9/18 更改列名使用rename(),例:RC.rename(columns={'LON':'diff_cumsum_rc_ma','LONGMA':'ma_diff_cumsum_rc_ma'},inplace=True)
2017/9/20 plt.axhline画水平线
2017/9/22 random.uniform在指定的范围内产生一个随机数
2017/9/25 string.format 使用{}与:取代%,优势非常明显;具体查看http://www.jb51.net/article/63672.htm
2017/9/27 list.append与list.extend的一个区别:a=[1,2],b=[3,4] a.append(b)时,b作为一个元素添加进去,即a=[1,2,[3,4]],而a.extend(b),b作为与a的同级元素添加进去,即合并,a=[1,2,3,4]
2017/10/13 eval函数非常强大,将字符串中内容进行编译并返回; 例:bb="1+3"   eval(bb)返回4
2017/10/16 DataFrame中的drop_duplicates可以删除重复数据
2017/10/16 字典中的get用法,dict.get('a',10),如果a的值存在则返回已存在的值,否则返回第二个参数指定的值,此处为10
2017/10/17 getattr获得属性的函数
2017/10/18 DataFrame随机抽样sample
2017/10/18 数据类型转换为列表的函数.tolist()
2017/10/18 删除列与行使用drop,其功能全面,pop函数功能单一,使用好drop,pop可知可不知
2017/10/25 单引号与双引号可以相互嵌套使用,不需要使用转义符;三双引号可以保留内部源格式,可以保留注释;它们的共同点均为字符串
2017/11/7 操作符 // ,该除法不管操作数为何种数值类型,总是会舍去小数部分,返回数字序列中比真正的商小的最接近的数字
2017//11/15 dataframe获取某一行的数据使用iloc
2017/11/15 在读取文件等较复杂的程序时,使用with as,可以处理异常,而且可以关闭未关闭的文件
2017/11/16 使用python.exe执行某文档就是编译
2017/11/27 获得列名的方法,list(df)就ok了,完全等同于df.columns.tolist()
2017/11/29 df索引为date时,df['2016-01']能获取到2016年1月份数据
2017/11/29 pd.HDFStore.append函数可以重复,需谨慎处理
2017/11/29 字符串前u代表对字符串进行unicode解码,字符串前r代表非转义的原始字符
2017/11/29 tile函数将指定的数据在行列方向上进行重复
2017/11/30 df.新版使用sort_values
2017/11/30 plt.subplots_adjust(hspace=0.5)调整图与图之间的距离
2017/12/1 今天才真正理解main的意义,讲清楚两件事情,只有当前运行的文档__name__为'main',import其他文件的中代码也会被程序执行,如果被import文件中加入if __name__=="main"那该部分代码就不会执行
2017/12/1 %Y代表4位数的年,%y代表两位数的年,%m代表两位数的月,%d代表两位数的日,%H代表24小时制,%M代表2位数的分,%S代表【00,61】(秒60与秒61用于闰秒)
2017/12/4 raw_input与input的区别,raw_input所有输入均为字符串,input的输入会自动判断类型,所以对input输入要求比较高,比如说字符串就必须加引号,而raw_input系统会自动添加上去
2017/12/6 matplotlib保存图片的方式,plt.savefig(filename),便必须在plt.show前否则保存的是一片空白
2017/12/7 reset_index参数中inplace=True代表删除原索引,如果为False则原索引生成新一列
2017/12/7 set_xticklabels可以设置x轴的标签,需要自己通过set_xticks来设置对应的索引,因为程序默认的是1,2,3,4……的刻度,否则日期会对应不上
2017/12/7 索引重置后从0开始
2017/12/12 np.where对数组满足要求的进行变化,否则保持原值; 对于arr数组,np.where(arr>0,2,arr)
2017/12/12 统计满足要求的数量,例:arr=randn(100),(arr>0).sum()#返回大于0的数量
2017/12/12 np.percentile位数函数,中位数np.median()等同于np.percentile(a,50)
2017/12/12 当数据框索引为整型时,取行数不能用-1,但可以使用iloc[-1]来获得最后一行
2017/12/12 plot在同一个ax上时,索引可以连接上
2017/12/12 更改列名,rename(columns={}),columns要写进去
2017/12/12 计算绝对值函数abs
2017/12/14 使用vnew file.py新建的文档无法正确使用matplotlib,猜测vim对python3.6的不支持
2017/12/14 np.newaxis可以在返回数据类型上起作用,data=np.random.randn(5,5),data[0,0]返回一个数,而data[0,0,np.newaxis]返回一个np.array格式,只包含data[0,0]的值,增加一个维度
2017/12/18 df.ix[2:,'a']可以行索引后面加个冒号代表可以索引到最后一行;列亦如此,df.ix[2,'a':]可行索引到最后一列
2017/12/19 for I in range(10)跳出循环后i仍然能使用
2017/12/19 global全局变量,可以把局部内变量变成全局变量
2017/12/19 seed = 7 ;np.random.seed(seed);设置随机种子,保证产生的随机序列是相同的;个人猜测本质是随机类是在初始化值上运用某个算法得出一列值;如果种子固定,那产生的随机序列必然相同 
2017/12/25 np.array([[1,2]])与np.array([1,2])的区别在于前一个是二维的,即(1L,2L);第二个是一维的,即(2L,)
2017/12/26 list与np.array类型都可以用负号来索引,dataframe自然就不用说了
2017/12/26 "sddldlkldkjuuu%d"%int 返回一个字符串
2017/12/27 os.path.exists(dir)判断目录是否存在,返回bool,os.makedirs(dir)
2017/12/29 list.extend(seq)添加一个序列,不能迭代的值不能放进去
2018/1/3 class中的object加入为新式类,有很多高级特性;结论就是使用新式类
2018/1/9 字符串前面加u代表将字符串转换成unicode对象(即01格式的对象),而不是一直认为的u就是utf-8的意思,python程序会根据第一行的编码进行编码,而不是defaultencoding
2018/1/9 decode将字符串转换成unicode对象,称为解码;encode称为编码将unicode对象转换成字符串
2018/1/16 dataframe数据类型的为object类型时,画图时需要将数据类型转换为numeric格式,才能画出来,否则会提示No numeric data to plot
2018/1/19 urllib2是python2爬虫的包,在python3中urllib2与urllib合并为urllib
2018/1/23 dataframe转数据类型astype,比如df.astype('float64')
2018/1/23 arr_one * arr_two的是两个数组的对应元素相乘,要求两个数组的shape完全一样
2018/1/24 applymap将矩阵每个元素执行某个操作,map将series每个元素执行某个操作
2018/1/24 UnboundLocalError: local variable 'find_predict_data' referenced before assignment意思是变量没有定义就被使用
2018/1/24 如果变量和函数一同级别定义,函数就可以识别该变量
2018/1/24 flatten为Np专有函数,df格式不可以使用
2018/1/24 list合并成一个字符串,str4 = ".".join(list3)  将列表中的元素相连,以双引号中的内容隔开,同时要求列表中元素为str类型
2018/1/24 一个列表中可以有多种数据类型
2018/1/24 当dataframe元素字符类型存在逗号时,保存结果会有双引号(这很容易理解,因为csv格式以逗号分割,字符串中还有逗号,为了区分这两种逗号,所以加了个双引号)
2018/1/25 dict(zip(df['a'],df['b'])
2018/1/29 iloc不仅用于行也用于列,标签到标签是包括最后一个标签的,序号(行号与列号)是不包括最后一个值的,比如说0:29如果系统判断为标签就有30个,如果系统判断为序号只有29个
2018/1/30 读取指定多少行,可以通过pd.read_csv(filename,nrow=100)来实现;内置的file函数不好实现
2018/1/31 频繁插入不要用numpy或dataframe格式,因为他们要求内存连续
2018/2/1 字典为无序数据,需要特别注意,本来一一对应的三个值,遍历时有两个值保存成字典,另外一个值为列表,最后信息没有一一对应起来
2018/2/5 assert断言机制,在断言表达式后添加字符串信息,为假时就会抛出信息,比如:assert len(lists) >=5,'列表元素个数小于5'
2018/2/5 生成器本质保存的是算法,进行迭代时,内存中永远只有一个数,所以非常节省内存;比如说生成100万个数的列表,非常消耗内存,但迭代时仅需要一个数,所以生成器应运而生;
2018/2/5 yield关键字类似于return,不同的是返回一个生成器
2018/2/5 xrange是python2,python3使用range替代,返回的值也不一样,3中的range返回对象类型
2018/2/8 指定范围内的整数产生多个随机数,选择np.random.randint,自带的随机模块只能产生一个数;速度快的不只是一点点,例np.random.randint(1,7,size=(4,10,5))
2018/2/8 多维数组使用flat返回迭代器,可以用一维的方式进行索引;
2018/2/8 numpy从0行开始的索引可以用[:10};从10行索引到最后一行可以用[10:],这样就可以节省计算最后一行索引的代码
2018/2/8 numpy获取不连续行可以用列表作为 行索引,比如 arr[[1,9,0]]
2018/2/8 map(fun,seq)将fun函数运用于seq的每一个元素,如果seq是三维的,那么迭代的是shape[0];比如:arr是三维(10,4,5),map(len,arr)就会对10个子元素(4,5)运用fun函数,返回每个元素的行数即4
2018/2/8 set()是新建一个类,初始化中可以传入空值或是可迭代类型;对于不可迭代类型转换成集合可用{4},这样的定义就是集合
2018/2/8 np.array格式可以用tolist,而dataframe格式不能用tolist
2018/2/26 axes与axis的区别,axes代表图的位置,比如plot中的axes=ax1; 而axis指的是轴,比如说axis=0,横坐标等;两个概念完全不一样
2018/2/26 python3.6版本中的生成器没有next()方法与python2.7不同;需要使用next(one_epoch)函数
2018/2/26 Plot显示label需要在plt.show()前加入plt.legend()
2018/2/27 pthon2的map函数返回list类型,而python3的map函数返回map对象,得到结果需要前面加个list
2018/2/28 pass是空语句,是为了保持程序结构的完整性;不做任何事情,一般用作占位符
2018/2/28 指定清华镜像地址下载:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple lxml
2018/3/1 pip install -U pip setuptools cython numpy同时将多个包进行更新
2018/3/1 指定安装的版本  pip install logbook==1.10
2018/3/21 and优先级高于or优先级
2018/3/21 os.walk相比os.listdir而言返回更多变量,包括根目录,子文件夹与文件列表以树状形式返回,以文件为叶节点,返回的文件是包括子目录中的文件夹中的文件;listdir只返回当前子目录下的文件与文件夹名
2018/3/21 sys.stdout.write()输出;print本质是调用sys.stdout.write函数加换行符;sys.stdout.flush()清空控制台已经输出的当前行
2018/3/21 collections是一集集合模块,包含很多好用的集合类;比如说相对于list可以高效的删减的队列deque
2018/3/23 open为内置函数,f=open(文件名,'w') 如果不存在就新建,存在就不用管,f.write可以直接写入文本文档
2018/3/29 c=a>b?a:b不存在这种写法;正确的c=a if a>b else b
2018/4/19 tf.cond类似于if else;tf(cond,fn1(),fn2()) ;cond为真时返回fn1,否则返回fn2;fn1与fn2都是函数
2018/4/19 tf.Variable与tf.get_variable的功能一样,后者的不能处理同名的变量,前者自动处理
2018/4/19 tf.constant_initializer()可以简写为tf.Constant()初始化为常数
2018/4/19 用到tf.placeholder,即占位符,赋值就需要用到feed_dict
2018/4/19 tf.control_dependencies是上下文管理器,传入的变量必有先执行,然后才执行其内部定义的操作
2018/4/20 y=γ(x-μ)/σ+β,其中x是输入,y是输出,μ是均值,σ是方差,γ和β是缩放(scale)、偏移(offset)系数scale缩放,offset是平移
2018/4/23 def a():pass; b=a;b也指向了a;a与b具有同样的功能;
2018/4/24 from sklearn.cross_validation import train_test_split; 该函数可以很好的分割样本集;新的版本已经改成from sklearn.model_selection import train_test_split
2018/5/3 安装包的名字与导入的包可以不一样;pip install -U scikit-learn;而导入时import sklearn就ok了
2018/5/3 numpy数组有size属性;arr=np.array([1,2,3])  arr.size的输出结果为3
2018/5/4 dataframe读取的时间格式会2018/5/4转换成2018-05-04
2018/5/10 更新scikit-learn库时,使用pip更新无法成功,因为有非常多的包依赖,而pip无法准确定位;而用conda可以成功更新
2018/5/11 plt.clf清除画布
2018/5/21 查看内存使用psutil
2018/5/22 numpy支持这种data[[1,2,3,5,6]]取数据的格式;而list不可以;而且这种格式会将数据看成一个维度的的,即只对第一维进行索引,返回的结果可以是多维的;
2018/5/22 不要用tab,用空格替代tab,在linux中出现tab错误
2018/5/24 获得list奇数项,list[::2]; 或者其他任意等差数列
2018/5/24 删除列表中奇数项del list[::2]
2018/5/29 np.linspace(-1, 1, 30, dtype=np.float32)[:, np.newaxis]代表第二个维度要存在,而且只有一列;等同于 np.linspace(-1, 1, 30, dtype=np.float32).reshape(-1,1)
2018/5/29 ax.lines.remove(lines[0])删除画布上的第一条线
2018/5/31 np.where可直接用在dataframe数据格式上,属于元素级的;比如:np.where(df[a]+df[b]>0.8,1,0)
2018/6/8 python3.6版本中的dict是有序的,打印顺序与存入顺序完全相同
2018/6/13 key in dict 是会查找字典中键; if key in dict:pass
2018/6/14 eval()函数十分强大,官方demo解释为:将字符串str当成有效的表达式来求值并返回计算结果;比如说文本文档中保存了字典内容,使用f.read()读取的是字符串,使用eval函数就直接将字符串去掉,直接将字符串的内容当成代码来执行
2018/6/14 三维数据或者说高维数据可以保存npy的格式;保存时用np.save('aa.npy',f1);加载时用np.load('aa.npy')
2018/7/4 df.replace替换函数功能强大,其中一种形式matches.replace({'Germany DR': 'Germany', 'China': 'China PR'})
2018/7/4 resample函数重采样,可以将时间序列从一个频率转换到另一个频率的处理过程;resample_data=data.resample('w').sum()
2018/7/4 Pipeline实现串行化,顺序执行一系列的数据转换,最后执行一个学习模型
2018/7/4 PolynomialFeatures多项式特征转换
2018/7/16 2*le3=2000; 1e数字1与字符e组合的符号,代表10,le后面的数字为10的指数;
2018/7/16 # 从某一分布(由均值和标准差标识)中获得样本
mu, sigma = 0, .1
s = np.random.normal(loc=mu, scale=sigma, size=1000)
2018/7/20 feather是一种高效保存dataframe格式的函数
2018/7/31 np.c_按行连接两个矩阵,np.r_按列连接两个矩阵
2018/8/6 自然底数,np.log默认为自然底数e;np.log10(10)
2018/8/17 ff=open(label_file_path,'w') ff.close() 创建空文件的方法
2018/8/17 import time;  time.sleep(1)  停留1s
2018/9/13 np.column_stack增加列 numpy.row_stack增加行
2018/9/18 codecs:用codecs提供的open方法来指定打开的文件的语言编码,它会在读取的时候自动转换为内部unicode
2018/9/20 二元组列表可直接创建字典;dict([(),(),()]);传入一个列表;列表中的每个元素都是一个元组;每个元组包含两个元素;
2018/9/21 函数前加这个 加速运算;@numba.jit(nopython=True)
2018/9/21 如果是IO密集带阻塞的任务,Python的多线程还是很不错的. 如果是CPU密集, 试试多进程好了.
2018/9/26 dot是矩阵乘法,*是元素级乘法
2018/9/27 ps.Series.str专门为series格式处理字符串而存在的类;存在cat,split,startswith等属性;
2018/10/7 CUDA_VISIBLE_DEVICES=0 python train.py   运行GPU;如果没有前面那个指定,推荐系统的训练没有启用GPU;
2018/10/8 np.rint()四舍五入的函数
2018/10/10 from sklearn.externals import joblib joblib.dump(object,'filename');这里的object可以是自己定义任何类的实例;本质是将类的变量属性都保存起来,当加载时,这些数据都可以获得;
2018/10/10 a=5;print(f'a={a}'):输出a=5
2018/10/10 双引号中的单引号不需要转义;反过来也是;"dd'"等同于‘dd\''
2018/10/15 中文字符串保存到csv文档,使用utf-8没有用,打开仍是乱码;而utf-8-sig就可以正常显示;Notepad无论哪种格式都可以正常打开;
2018/10;/21 一个文件被import的前提是需要python filename.py后才可以的;
2018/10/16 list的append函数会将插入的元素原原本本的添加进去;无论被添加元素是不是列表格式;
2018/10/17 类中出现与property属性同名的变量是无效的,系统只会把它当作一个属性来对待的
2018/10/17 encode('utf-8')后转换为二进制
 2018;/10/17 sess.run(tf.random_normal([5,5])的数据类型为nd.array格式
2018/10/18 //为整除符号,返回的浮点型,而不是常规认为的整数
2018/10/19 pd.read_csv读取中文文档用了gb18030编码才正常显示;gb2312,utf-8都不行;
2018/10/.19 使用open函数读写二进制文件需要用到b;比如说rb,wb
2018/10/19 类的变量定义中不需要用逗号;我定义静态类,类中变量每一行一个,每个后面加个逗号;最后本该是128的最后返回的是(128,)
2018/10/22 tf.train.SummaryWriter已经被deprecated,改成tf.summary.FileWriter
2018/10/23 tensorflow模型是不能序列化的,无论刚训练完还是重新加载;
2018/10/23 list.sort()升序排列;直接使用,不需要使用赋值
2018/10/23 numpy.reshape(-1,1)让一个只有几十M的程序,内存使用暴涨到42G,出现内存错误
2018./10/24 logger模块的路径使用/出现编码问题,全部替换使用/;文档路径统一使用正斜杠/
2018/10/24 命令行可以使用语句:python -c 'import tensorflow as tf;sess=tf.Session();print(sess.run(tf.constant(4.0)))';python -c 执行cmd中的代码
;python -m module.py 此时的-m可以省略
2018/10/26 sys.getsizeof返回字节大小;
2018/10/29 读取excel文件,使用xls_file=pd.ExcelFile(path);然后再读取工作表使用xls_file.parse("sheet1")
2018/10/29 更改列名的方法:df.rename(columns={'a':'a1','b':'b1'},inplace=True)
2018/10/29 对象类型中字符串输出是带引号的;但作比较的时候需要当作字符串来看的;
2018/10/29 禁用GPU的好方法;os.environ["CUDA_VISIBLE_DEVICES"]="-1"
2018/10/30 data.columns=[name.encode('utf-8') for name in data.columns];列名全部为二进制,要成功索引,(data[b'close'].iloc[0:5];即需要在前面加个字母b
2018/10/31 列表的extend函数等同于加号;例子:ss=['aaa','你好']+['安极网','贵州']
2018/10/31 pd.Series格式删除nan值,直接使用dropnan函数即可
2018/11/2 获得dataframe数据类型的语句;df.dtypes; 切记是复数形式
2018/11/2 使用df.apply函数切记需要指明轴;即axis=1
2018/11/2 字符串使用*符号;s='dd'   s*3 ‘dddddd'
2018/11/4 str函数传入list,tuple,dict,直接将其转换成了其定义的形式;换句话说,如果执行eval(str(dict))得到dict;
2018/11/5 shuffle_news_ids=data['ID'].values
np.random.shuffle(shuffle_news_ids)
2018/11/8 filter_data=data[data['股票正文简称'].isin(usr_looked_stocknames)] isin函数的使用方式
2018/11/8 pd.set_option('display.max_colwidth',1000);设置打印输出时的显示宽度
2018/11/12 稀疏矩阵有shape属性;即能知道行列数

猜你喜欢

转载自blog.csdn.net/ningyanggege/article/details/84061907