怎么用python计算股票

2024-05-15

1. 怎么用python计算股票

作为一个python新手,在学习中遇到很多问题,要善于运用各种方法。今天,在学习中,碰到了如何通过收盘价计算股票的涨跌幅。
第一种:
读取数据并建立函数:
import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import spline
from pylab import *
import pandas as pd
from pandas import Series
a=pd.read_csv('d:///1.csv',sep=',')#文件位置

t=a['close']
def f(t):
s=[]
for i in range(1,len(t)):
if i==1:
continue
else:
s.append((t[i]-t[i-1])/t[i]*100)
print s
plot(s)


plt.show()
f(t)
第二种:
利用pandas里面的方法:
import pandas as pd

a=pd.read_csv('d:///1.csv')
rets = a['close'].pct_change() * 100
print rets

第三种:
close=a['close']
rets=close/close.shift(1)-1
print rets


总结:python是一种非常好的编程语言,一般而言,我们可以运用构建相关函数来实现自己的思想,但是,众所周知,python中里面的有很多科学计算包,里面有很多方法可以快速解决计算的需要,如上面提到的pandas中的pct_change()。因此在平时的使用中应当学会寻找更好的方法,提高运算速度。

怎么用python计算股票

2. python panda怎么处理数据

创建数据

通过Python的zip构造出一元组组成的列表作为DataFrame的输入数据rec。

In [3]: import pandas as pd
In [4]: import random
In [5]: num = random.sample(xrange(10000, 1000000), 5)
In [6]: num
Out[6]: [244937, 132008, 278446, 613409, 799201]
In [8]: names = "hello the cruel world en".split()
In [9]: names
Out[9]: ['hello', 'the', 'cruel', 'world', 'en']
In [10]: rec = zip(names, num)
In [15]: data = pd.DataFrame(rec, columns = [u"姓名",u"业绩" ])
In [16]: data
Out[16]:
     姓名  业绩
0    hello   244937
1    the     132008
2    cruel   278446
3    world   613409
4    en      799201 


DataFrame方法函数的第一个参数是数据源,第二个参数columns是输出数据表的表头,或者说是表格的字段名。



导出数据csv

Windows平台上的编码问题,我们可以先做个简单处理,是ipython-notebook支持utf8.
import sys
reload(sys)
sys.setdefaultencoding("utf8")


接下来可以数据导出了。
In [31]: data
Out[31]:
     姓名  业绩
0    hello   244937
1    the     132008
2    cruel   278446
3    world   613409
4    en      799201 
#在ipython-note里后加问号可查帮助,q退出帮助
In [32]: data.to_csv?
In [33]: data.to_csv("c:\\out.csv", index = True, header = [u"雇员", u"销售业绩"])


将data导出到out.csv文件里,index参数是指是否有主索引,header如果不指定则是以data里columns为头,如果指定则是以后边列表里的字符串为表头,但要注意的是header后的字符串列表的个数要和data里的columns字段个数相同。



可到c盘用Notepad++打开out.csv看看。




简单的数据分析
In [43]: data
Out[43]:
     姓名  业绩
0    hello   244937
1    the     132008
2    cruel   278446
3    world   613409
4    en      799201
#排序并取前三名
In [46]: Sorted = data.sort([u"业绩"], ascending=False)
         Sorted.head(3)
Out[46]:
     姓名  业绩
4    en      799201
3    world   613409
2    cruel   278446




图形输出
In [71]: import matplotlib.pyplot as plt
         #使ipython-notebook支持matplotlib绘图
         %matplotlib inline
In [74]: df = data
         #绘图
         df[u"业绩"].plot()
         MaxValue = df[u"业绩"].max()
         MaxName = df[u"姓名"][df[u"业绩"] == df[u"业绩"].max()].values
         Text = str(MaxValue) + " - " + MaxName
         #给图添加文本标注
         plt.annotate(Text, xy=(1, MaxValue), xytext=(8, 0), xycoords=('axes fraction', 'data'), textcoords='offset points')




如果注释掉plt.annotate这行

3. python3怎么用pandas读wps表格

wps表格?也就是excel表格是吧?import pandas as pdex1 = pd.read_excel("xxx.xlsx")


参考官方文档http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_excel.html#pandas.read_excel

python3怎么用pandas读wps表格

4. python中利用pandas怎么处理缺省值

null/None/NaN 
null经常出现在数据库中 
None是Python中的缺失值,类型是NoneType 
NaN也是python中的缺失值,意思是不是一个数字,类型是float 
在pandas和Numpy中会将None替换为NaN,而导入数据库中的时候则需要把NaN替换成None
找出空值
isnull() 
notnull()
添加空值
numeric容器会把None转换为NaN
In [20]: s = pd.Series([1, 2, 3])

In [21]: s.loc[0] = None

In [22]: s
Out[22]: 
0    NaN
1    2.0
2    3.0
dtype: float641234567891012345678910

object容器会储存None
In [23]: s = pd.Series(["a", "b", "c"])

In [24]: s.loc[0] = None

In [25]: s.loc[1] = np.nan

In [26]: s
Out[26]: 
0    None
1     NaN
2       c
dtype: object123456789101112123456789101112

空值计算
arithmetic operations(数学计算)
NaN运算的结果是NaN
statistics and computational methods(统计计算)
NaN会被当成空置
GroupBy
在分组中会忽略空值
清洗空值
填充空值
fillna
DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)
参数
value : scalar, dict, Series, or DataFrame
method : {‘backfill’, ‘bfill’, ‘pad’, ‘ffill’, None}, default None(bfill使用后面的值填充,ffill相反)
axis : {0 or ‘index’, 1 or ‘columns’}
inplace : boolean, default False
limit : int, default None
downcast : dict, default is None
返回值
filled : DataFrame
Interpolation
replace
删除空值行或列
DataFrame.dropna(axis=0, how=’any’, thresh=None, subset=None, inplace=False)
参数
axis : {0 or ‘index’, 1 or ‘columns’}, or tuple/list thereof
how : {‘any’, ‘all’}
thresh : int, default None
subset : array-like
inplace : boolean, default False
返回
dropped : DataFrame

5. python如何用pandas导入csv文件数据?

data['tradeDate']不是data['tradeData']date date  date !!

python如何用pandas导入csv文件数据?

6. 请问用python的pandas库如何实现计算某一个元素在另一个类别中出现的次数?

如果用pivot_table,需要给df重复出一列data_typedf['col']=df.data_typedf.pivot_table(index='year',columns='col',values='data_type',aggfunc=pd.Series.value_counts)col   1  2  3year         2006  4  4  42007  3  3  22008  3  3  4用交叉表其实最方便:pd.crosstab(df.year,df.data_type)data_type  1  2  3year              2006       4  4  42007       3  3  22008       3  3  4

7. 有没有基于python pandas的回测框架

关键词:开源、python/pandas、易学方便、可以并行、参数优化、事件驱动、亚ms速度、持续维护、支持股票/期货等
介绍:
在事件驱动的回测框架中,引擎逐个读取Bar或Tick并处理。数据采集模块生成市场数据事件,流经策略模块(Strategy类)产生交易信号,资产组合模块根据策略信号,并结合风险管理来判断是否委托下单,模拟的交易所根据滑点、手续费状况等返回成交结果。
使用XQuant后,大部分时候我们不需要关心底层是如何处理的,只需要在Strategy类中完成从数据到信号的处理即可,这有利于我们快速开发策略。
详细见Github,欢迎star、issue,PR。
【Update】结合其他回答有必要更新一下,供大家参考:
明晰两个问题:
1)事件驱动在大部分时候都是必须的,尽量去模拟真实交易过程中的数据播放过程,避免引入未来函数等,机器学习的feature之类可以预先算好存起来;
2)pandas用来I/O,内部的数据结构还是用python自带的,这样达到0.1ms/条的数据处理还是挺容易的,如果还是嫌速度慢,可以利用多核优势,并行运算。

有没有基于python pandas的回测框架

8. python pandas 怎么引用一个数据

1.queryset是查询集,就是传到服务器上的url里面的查询内容。Django会对查询返回的结果集QuerySet进行缓存,这是为了提高查询效率。也就是说,在你创建一个QuerySet对象的时候,Django并不会立即向数据库发出查询命令,只有在你需要用到这个QuerySet的时候才会这样做。
2.Objects是django实现的mvc中的m,Django中的模型类都有一个objects对象,它是一个Django中定义的QuerySet类型的对象,它包含了模型对象的实例。
3.不能,因为get可能会有异常,可以用filter函数,如下
>>> Entry.objects.filter(blog__id__exact=1)# 显示的使用__exact
>>> Entry.objects.filter(blog__id=1)# 隐含的使用__exact>>> Entry.objects.filter(blog__pk=1)# __pk 相当于 __id__exact