Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pandas numpy.ndarray对象没有属性_Python_Pandas - Fatal编程技术网

Python pandas numpy.ndarray对象没有属性

Python pandas numpy.ndarray对象没有属性,python,pandas,Python,Pandas,我把pd.ewm改成了pd.DataFrame.ewm,就像其他人说的那样(原来是pd.ewm(ups.span=RSI_N)[-1])。但这又给我带来了另一个问题。 我做错了什么?有人知道发生了什么吗 我已编辑成完整的错误消息 from binance.client import Client import numpy as np import pandas as pd import smtplib API_KEY = 'jHH6LNaSsdenA6xdJLRN9LVngY9KgrZ4dTz

我把pd.ewm改成了pd.DataFrame.ewm,就像其他人说的那样(原来是pd.ewm(ups.span=RSI_N)[-1])。但这又给我带来了另一个问题。 我做错了什么?有人知道发生了什么吗

我已编辑成完整的错误消息

from binance.client import Client
import numpy as np
import pandas as pd
import smtplib

API_KEY = 'jHH6LNaSsdenA6xdJLRN9LVngY9KgrZ4dTzdk8685D6oquaVovY1PSuHgeQRCal5'
API_SECRET = 'DzJjJFkjppeSPQYBZg66Y2taIDr25ENfkI0G0SrxsqePYtdJX9cnxqdAHF0I8ocjS'
user = 'shinadfjinseub@gmail.com'
passwd = 'asdfaasdf!!'

client = Client(API_KEY, API_SECRET)

# against ETH
SYMBOLS = ('ADA', 'ADX', 'BAT', 'BCC', 'DASH', 'EOS', 'IOTA',

        'LTC', 'NEO', 'OMG', 'STORJ', 'XLM', 'NANO', 'XRP', 'XVG', 'ZEC')
RSI_N = 14
RSI_THRESHOLD = 8
RUN_INTERVAL_MINS = 30

def send_email(rsi_values):
    if len(rsi_values) > 0:
        message = '\n'.join('{0:>8} {1:.2f}'.format(symbol, rsi) for (symbol, rsi) in rsi_values)
        email_text = 'From: {0}\nTo: {1}\nSubject: Stock Recommendations\n\n{2}'.format(user, user, message)

        try:
            server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
            server.ehlo()
            server.login(user, passwd)
            server.sendmail(user, user, email_text)
            server.close()
        except:
            pass

while True:
    rsi_values = []
    for SYMBOL in SYMBOLS:
        klines = client.get_historical_klines(SYMBOL + 'ETH', Client.KLINE_INTERVAL_30MINUTE, '{} hours ago UTC'.format((RSI_N + 3) // 2))
        closings = np.asarray(klines, dtype=np.float)[-RSI_N - 1:, 4]
        diffs = np.diff(closings)
        ups = diffs.clip(min=0)
        downs = diffs.clip(max=0)
        ups_avg = pd.DataFrame.ewm(ups, span=RSI_N).mean()
        downs_avg = -pd.DataFrame.ewm(downs, span=RSI_N).mean()
        rs = ups_avg / downs_avg
        rsi = 100 - 100 / (1 + rs)
        rsi_values.append((SYMBOL, rsi))

    print('\n'.join('{0:>8} {1:.2f}'.format(symbol, rsi) for (symbol, rsi) in rsi_values))
    rsi_values = list(filter(lambda x: x[1] < RSI_THRESHOLD, rsi_values))
    send_email(rsi_values)
从binance.client导入客户端
将numpy作为np导入
作为pd进口熊猫
导入smtplib
API_键='JH6lnasdena6xdjlrn9lvngy9kgrz4dtzdk8685d6oquavovy1psuhgeqrcal5'
API_SECRET='DZJJFKJPPESPQYBZG66Y2TAIDR25ENFKI0G0SRXSQEPYTDJX9CNXQDAHF0I8OCJS'
用户shinadfjinseub@gmail.com'
passwd='asdfaasdf!!'
客户端=客户端(API\U密钥、API\U密钥)
#反对ETH
符号=(‘ADA’、‘ADX’、‘BAT’、‘BCC’、‘DASH’、‘EOS’、‘IOTA’,
‘LTC’、‘NEO’、‘OMG’、‘STORJ’、‘XLM’、‘NANO’、‘XRP’、‘XVG’、‘ZEC’)
RSI_N=14
RSI_阈值=8
运行间隔时间=30分钟
def发送电子邮件(rsi_值):
如果len(rsi_值)>0:
消息='\n'。联接('{0:>8}{1:.2f}'。rsi_值中(symbol,rsi)的格式(symbol,rsi)
电子邮件文本='From:{0}\nTo:{1}\n对象:股票推荐\n\n{2}'。格式(用户、用户、消息)
尝试:
server=smtplib.SMTP\u SSL('SMTP.gmail.com',465)
server.ehlo()
server.login(用户,passwd)
server.sendmail(用户、用户、电子邮件文本)
server.close()
除:
通过
尽管如此:
rsi_值=[]
对于符号中的符号:
klines=client.get_historical_klines(SYMBOL+'ETH',client.KLINE_INTERVAL_30分钟,{}小时前UTC'。格式((RSI_N+3)//2))
关闭=np.asarray(klines,dtype=np.float)[-RSI_N-1:,4]
差异=np.差异(关闭)
ups=差异剪辑(最小值=0)
向下=差异剪辑(最大值=0)
ups_avg=pd.DataFrame.ewm(ups,span=RSI_N).mean()
downs_avg=-pd.DataFrame.ewm(downs,span=RSI_N).mean()
rs=平均上升/平均下降
rsi=100-100/(1+rs)
rsi_值。追加((符号,rsi))
打印('\n'.join('{0:>8}{1:.2f}'。rsi_值中(symbol,rsi)的格式(symbol,rsi))
rsi_值=列表(过滤器(λx:x[1]
错误:

      Traceback (most recent call last):
  File "C:\Users\심현규\PycharmProjects\FINALPROJECT\autowork.py", line 43, in <module>
    ups_avg = pd.DataFrame.ewm(ups, span=RSI_N).mean()
  File "C:\Users\심현규\PycharmProjects\FINALPROJECT\venv\lib\site-packages\pandas\core\generic.py", line 11282, i
n ewm
    axis = self._get_axis_number(axis)
AttributeError: 'numpy.ndarray' object has no attribute '_get_axis_number'
回溯(最近一次呼叫最后一次):
文件“C:\Users”\심현규\PycharmProjects\FINALPROJECT\autowork.py“,第43行,在
ups_avg=pd.DataFrame.ewm(ups,span=RSI_N).mean()
文件“C:\Users”\심현규\PyCharmProject\FINALPROJECT\venv\lib\site packages\pandas\core\generic.py”,第11282行,i
n ewm
轴=自身。获取轴编号(轴)
AttributeError:'numpy.ndarray'对象没有属性'\u get\u axis\u number'

您从未真正将
ups
转换为数据帧。
DataFrame.ewm()
方法应应用于熊猫数据框架或熊猫系列的实例(根据Mustafa的评论)

因此,这有望解决问题:

while True:
    rsi_values = []
    for SYMBOL in SYMBOLS:
        klines = client.get_historical_klines(SYMBOL + 'ETH', Client.KLINE_INTERVAL_30MINUTE, '{} hours ago UTC'.format((RSI_N + 3) // 2))
        closings = np.asarray(klines, dtype=np.float)[-RSI_N - 1:, 4]
        diffs = np.diff(closings)
        ups = diffs.clip(min=0)
        ups = pd.DataFrame(ups)   # Convert to a dataframe    
        downs = diffs.clip(max=0)
        ups_avg = ups.ewm(span=RSI_N).mean()   # Now perform ewm on the dataframe

希望这有帮助。其他变量也可能存在类似问题。

请显示完整的错误消息。抱歉。我已经编辑过了。我希望这些不是真正的秘密和api密钥。如果他们是,你应该立即撤销我上传的那些密钥,因为我希望其他人能测试它。。我编辑了它+,但是
pd.DataFrame.ewm
也接受
pd.Series
@MustafaAydın,不,有一个单独的方法-
pd.Series.ewm()
用于Series。是的,但是
ewm
两者都解析为
NDFrame.ewm
,它们的父项。哦,是的,我已经根据你的评论修改了答案。更改代码后我还有一个问题。