数据处理
肥宅_Sean
在UCB,Stanford各做过一段时间的RA。去牛津访学过一段时间。
现在在某家头部量化当研究员。
个人站: https://seanquant.github.io/
展开
-
【全新版本】matplotlib figure转为numpy array或者PIL图像进行显示
之前在网上看到了一个,但是写得太冗长了因为他的思路是实际上反过来操作,会更加简单。原创 2023-01-18 11:17:43 · 647 阅读 · 0 评论 -
pandas明明数据有,但是通过该标签进行筛选的时候就得到空或者是错误的结果
简述如果你也是遇到来,想要通过pandas筛选dataframe中的数据,但是筛选的结果却都是空的话或者是 遇到了 xxx in series 这样的操作,但是结果不符合预期。那下面的方法可能会帮到你。解决办法问题原因:你筛选的类型是int 或者类似的 int32,int64之类的。因此筛选的时候,用的是index,而不是value在进行判断解决办法:.values操作,指定用series的value作为list比如: xxx in series 变成 xxx in series.value原创 2021-03-29 14:14:35 · 1548 阅读 · 0 评论 -
一行代码生成希尔伯特矩阵(Python)矩阵迅速扩展操作
简述在Sklearn的document上看到的这个代码。简直是让人不得不佩服。太天才了!下面这一行代码就生成了一个10*10的希尔伯特矩阵X = 1. / (np.arange(1, 11) + np.arange(0, 10)[:, np.newaxis])没错,就是这么6然后,怀着敬畏的心,对这个做进一步的研究。print(np.arange(1, 11) + np.a...原创 2018-08-02 15:58:15 · 5916 阅读 · 1 评论 -
【数据展示】matplotlib.pyplot.plot()探究
这篇文章会结合文档做出对于这个函数的解释函数使用的范式:plot([x], y, [fmt], data=None, **kwargs)plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)fmt:是一种很方便的定义画图的基本样式的操作 比如:'b+'、'ro'之类的。 (具体含义在后面有,先记下这个范式先吧(其实就是 x...原创 2018-08-03 23:15:06 · 1441 阅读 · 0 评论 -
分段埃尔米特插值Python实现并检查误差
函数y=11+x2y=11+x2y = \frac{1}{1 + x^2}图像 可以看到,这里已经几乎没有任何差距了。。代码import numpy as npfrom sympy import *import matplotlib.pyplot as pltdef f(x): return 1 / (1 + x ** 2)def cal(be...原创 2018-05-27 16:49:04 · 3530 阅读 · 0 评论 -
Pandas通过某列不是NaN来进行筛选
根据Column列来筛选整个dataframe下面的如果是空的就不要整一行df[df['Column'].notna()]原创 2018-10-05 13:08:09 · 28783 阅读 · 0 评论 -
【修改版】10行代码爬取A股上市公司信息
简述前几天在网上看了一份代码,非常认真地学习了一波。对于一些瑕疵做了修改。旧版本的问题下载下来的文件每隔20行就出现一个column然后下载次数较多的话,会被别人给禁一会之前的代码真的是10行。。新版本中修复了这样的bugimport pandas as pdimport requestsimport randomurl = 'http://s.askci.com/st...原创 2018-10-09 15:02:25 · 2149 阅读 · 0 评论 -
【时序数据处理】pandas某些列由于n个数据导致的,通过Series生成Dataframe
简述经常会遇到这样的情况,比如说,我们认为当天的温度,是由于前面几段时间的影响导致的。但是我们手头上只有温度的列表,为了捕捉到这样的特征,我们往往需要把这样的一维的数据,转成二维的数据。实例初始数据:左边是index,右边是真实数据0 11 22 33 44 5dtype: int64如果我们认为当前的数据是由于前面两天的数据导致的,就会需...原创 2018-12-20 13:54:05 · 1360 阅读 · 2 评论 -
pandas内容像日期的数据如何变成真DataTime,并赋予时间类似的操作
变format:表示str的样式errors:如果出现的bug,那该怎么处理(raise表示出现了就给我爆出来)df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d', errors='raise')常用的format除了上面的还有:%Y/%m/%d%Y年%m日%d…Sort是没问题的按照日期排序先变了之...原创 2019-06-06 00:09:51 · 794 阅读 · 0 评论 -
Pandas.DataFrame转置
简述Motivationsometimes,换一种获取数据的方式,可以提高数据获取的速度。sometimes,由于预计爬取的数据长度不确定,只能这么先存储起来。sometimes,有个给你的数据就是这样,但是没办法很方便的使用…这些情况下,你可能就会需要遇到DataFrame行列转置的方法。Contribution提供了Pandas.DataFrame的行列转置的方法实验部分...原创 2019-06-02 22:52:19 · 66391 阅读 · 3 评论 -
Pandas.DataFrame按行求百分数(比例数)
简述Motivation一般来说,每个部分的内容数量是较为容易获取的,但比例(百分数)这样的数据是二次数据,这样的操作很常见比例的信息相比于纯粹的数字更体现的整体体系的内部变化迁移的过程Contribution给了实例,follow下就没问题了~Codes导入包的部分,我就不写了哈这里假设每行是属于不同月份的数据>>> df a ...原创 2019-06-02 23:04:34 · 27415 阅读 · 5 评论 -
Numpy.array矩阵百分制化(比例化)
简述用途不用说,很常用对于DataFrame的情况,但是操作却截然不同。注意对比。Pandas.DataFrame按行求百分数(比例数)问题假设有数据A>>> Aarray([[ 0, 1, 2, 3, 4], [ 5, 6, 7, 8, 9], [10, 11, 12, 13, 14], [15, ...原创 2019-06-02 23:14:39 · 6734 阅读 · 0 评论 -
Python过滤掉numpy.array中非nan数据
代码需要先导入pandasarr的数据类型为一维的np.arrayimport pandas as pdarr[~pd.isnull(arr)]原创 2019-06-26 20:46:16 · 8908 阅读 · 0 评论 -
分段线性插值Python实现(同时估计误差)
函数y=11+x2y=11+x2y = \frac{1}{1+x^2}算法这个算法不算难。甚至可以说是非常简陋。但是在代码实现上却比之前的稍微麻烦点。主要体现在分段上。代码import numpy as npfrom sympy import *import matplotlib.pyplot as pltdef f(x): return 1 / (1 ...原创 2018-05-27 16:34:13 · 5311 阅读 · 1 评论 -
拉格朗日插值--11次切比雪夫多项式零点作为节点Python实现并计算误差
目标函数y=11+x2y=11+x2y = \frac{1}{1+x^2}条件通过拉格朗日进行插值但是通过所给的节点的不同,会导致插值的效果也不同。下面方法采用的是用等距节点来实现插值效果。插值节点: 使用的是11次切比雪夫多项式的零点(扩展到指定的x空间) 也就是11个特定的节点。可以区别于之前的使用等距节点的情况插值效果图龙格现象基本不严重。虽然误差还存在,...原创 2018-05-27 15:39:46 · 9438 阅读 · 5 评论 -
埃尔米特插值(等距节点,只用一个点的导数构造n+1阶Hermite多项式)Python实现
函数y=11+x2y=11+x2y = \frac{1}{1+x^2}埃尔米特插值埃尔米特多项式构造方法有很多种。 这里只是用最简单的一种,通过均差来进行构造,最后再通过任意一个点的导数来计算出一个待定系数(这里假设的是m)。下面代码中使用的是第一个点的导数相等来作为限制,算出这个多项式。插值效果代码下面代码就是根据之前的拉格朗日插值改进得到的。所以那个lab...原创 2018-05-27 15:06:30 · 4308 阅读 · 0 评论 -
将两个DataFrame拼接起来,除了concat还有append()
也是有趣,我一直在想用concat来实现将两个dataframe给拼接起来。但是在习惯了 a = a + b 的这样运算思维之后,用concat心中的苦,恐怕除了我,就只有搜到我这篇文章的你知道了….concat是不支持这样的用法的 dfA = pd.concat(dfA, dfB)但是append()支持!! dfA = dfA.append(dfB) 就是OK的,虽然不太...原创 2018-02-09 20:47:07 · 31000 阅读 · 2 评论 -
dataframe筛选数据根据某一个列的数据在另外的一个数组中
对dataframe中的数据进行筛选。想要根据某一列的数据比如要在另外的一个数组中,这时,就需要用到dataframe中比较经典的函数了isin()函数。 函数会返回一个bool型的dataframe。而众所周知,这样一个bool型的dataframe可以 被[]这两个符号给囊括住,而进行筛选。下面代码的意思就是筛选一下,选出column列数值在arr数组中的行(s)~arr = [...原创 2018-02-09 23:21:22 · 29955 阅读 · 2 评论 -
dataframe的重设index
Python之中最为令人头疼的,大概就是不知道函数究竟是作用在函数本身还是作用在返回的对象上了。 做个笔记,dataframe的重设index是用在了自身上了dfff.reindex(index=range(len(dfff)))print(dfff)...原创 2018-02-09 20:52:21 · 11585 阅读 · 0 评论 -
画Series的散点图
画一个Series的散点图,这恐怕是很多人都会想要做的事情。但是好像在网上都没有找到类似的文档或者库我在这提供一种思路:将Series转换成dataframe,在将index转成一个新的列。再通过两者的关系构建一个散点图当然下面要使用的诸多库,想必能查到这个文档的你,也是会导入的吧~df = series.to_frame()column = df.columns[0]...原创 2018-02-10 10:58:31 · 2475 阅读 · 0 评论 -
3行代码实现从excel中读取出某列元素为所想要的元素集合中的所有行
下面代码实现了,读取脚本所在目录的名字叫做filename的一个excel文件。并特定的只选了其中columns这一列元素在Values中的行代码在下面def readexcel(filename, *Values): df = pd.read_excel(os.path.join(os.getcwd(), filename)) return df[df["Column...原创 2018-02-10 17:23:16 · 1347 阅读 · 0 评论 -
DF以某一列的元素筛选其中属于某个集合的元素的所有行(2个版本函数)
两行代码def filterDf(df, Column, *Values): return df[df[Column].isin(Values)]一行代码lambda df, Column, *Values: df[df[Column].isin(Values)]原创 2018-02-10 17:34:42 · 4712 阅读 · 0 评论 -
python得到一个excel的全部sheet标签值
这里需要用到python处理excel很经典的库openpyxl,安装也特别简单。window直接pip install就好了代码在这里~wb = openpyxl.load_workbook(filepath)sheetnames = wb.sheetnames...原创 2018-02-11 15:55:30 · 5551 阅读 · 0 评论 -
Python将DataFrame的某一列作为index
下面代码实现了将df中的column列作为indexdf.set_index(["Column"], inplace=True)原创 2018-02-11 16:20:30 · 112762 阅读 · 4 评论 -
将DataFrame中的每一列分别做归一化处理的函数实现
将DataFrame中的每一列分别做正则化处理的函数def regularit(df): newDataFrame = pd.DataFrame(index=df.index) columns = df.columns.tolist() for c in columns: d = df[c] MAX = d.max() M...原创 2018-02-12 10:18:52 · 16156 阅读 · 2 评论 -
Python数据相关系数矩阵和热力图轻松实现
对其中的参数进行解释plt.subplots(figsize=(9, 9))设置画面大小,会使得整个画面等比例放大的sns.heapmap()这个当然是用来生成热力图的啦df是DataFrame, pandas的这个类还是很常用的啦~df.corr()就是得到这个dataframe的相关系数矩阵把这个矩阵直接丢给sns.heapmap中做参数就好啦sns.heapmap中annot...原创 2018-02-10 15:17:54 · 45557 阅读 · 3 评论 -
某些列满足特定条件,然后改变另外的某些列的值(Python)
import pandas as pddf = pd.DataFrame({"A": [1, 2, 3, 4], "B": list('abcd'), 'C': [1.2, 2.3, 3.4, 4.5]})print(df) # 看一看dfdf.loc[df.A > 2, 'B'] = 'changed' # 关键句print(df)输出的结果是: 意思是: 如果df...原创 2018-03-19 11:32:27 · 20518 阅读 · 5 评论 -
Ricequant米矿【MACD策略代码解释】量化交易
解释:下面定义了四个函数。但是,其实只用了第一个函数,跟最后一个函数。这两个函数是必有的。多定义的这几个函数 getPrice,跟getRolling 也是比较简单的。除开这两个自定的函数外,另外两个函数,相信,看到了我做的注释之后,看起来会简单很多。(后续,如果想看对于这个两个自定函数的分析。除了看上面的注释之外,我在最后也会做解释的~)代码import talib...原创 2018-03-28 10:57:11 · 5088 阅读 · 2 评论 -
Datafarne按照某一列的特定规则进行排序【Python】
import pandas as pdif __name__ == '__main__': df = pd.DataFrame({'AAA': range(5), 'BBB': list('abcde'), 'CCC': ['a', 12, 1.2, ['alist'], (1, 2)]}) print((df.AAA - 1).abs().argsort()) pri...原创 2018-03-25 14:46:49 · 3275 阅读 · 0 评论 -
【解决方法】Panda read_csv()把第一行的数据变成了列名,怎么处理
前言有些时候,我们会遇到很多这样的数据,比如,这个csv的第一行并不是我们想象中的那样是一个列名。那样,我们处理数据的时候,就会出现问题,第一个不一致了嘛。解决方案调用csv库,自己重新编写读文件的程序。csv库,是python自带的库。如果数据都是字符类型这样的条件下,问题是非常简单,直接调用csv.reader()这个迭代器来读取就好了。如果数据中除了有字符串还...原创 2018-04-21 15:29:22 · 36698 阅读 · 4 评论 -
matplotlib显示中文(显现中文之后负号无法显示)
只需要在代码前加入这样的两句话就好了plt.rcParams['font.sans-serif']=['SimHei'] # 用来正常显示中文标签 plt.rcParams['axes.unicode_minus']=False # 用来正常显示负号可能疑问: 为什么已经有了第一个可以显示中文之后,还不行呢? 解答:在加入显示中文之后,会导致负号显示出现问题,这时候就需要使用第...原创 2018-05-27 12:20:25 · 4606 阅读 · 2 评论 -
拉格朗日插值--等距节点Python实现并计算误差
目标函数y=11+x2y=11+x2y = \frac{1}{1+x^2}条件通过拉格朗日进行插值但是通过所给的节点的不同,会导致插值的效果也不同。下面方法采用的是用等距节点来实现插值效果。插值节点分别是-5,-4,-3,-2,-1,0,1,2,3,4,5插值效果图龙格显现很严重,不过大致吻合。代码import numpy as npfrom ...原创 2018-05-27 12:44:20 · 4454 阅读 · 0 评论 -
DataFrame关于某一列做归一化处理
之前一直在写 df['coloumn'] = df['coloumn'].apply(lambda x: (x - MIN) / (MAX - MIN)) 但是系统一直报错。SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame.Try using .loc[...原创 2018-02-09 20:23:07 · 14824 阅读 · 5 评论