标签: pandas-datareader

没有名为pandas_datareader的模块

我刚安装成功运行的pandas_datareader使用pip install pandas-datareader.

现在我正在尝试将它用于教程,当我尝试导入时出现此错误.

    import pandas_datareader as pdr

ModuleNotFoundError: No module named 'pandas_datareader'
Run Code Online (Sandbox Code Playgroud)

这是教程的链接.

https://www.datacamp.com/community/tutorials/finance-python-trading#gs.DgsO1BY

有任何想法吗?

module python-import python-3.x spyder pandas-datareader

7
推荐指数
5
解决办法
4万
查看次数

pandas read_excel(sheet name = None) 返回字符串字典,而不是数据帧?

pandas read_excel 文档说指定sheet_name = None应该返回“所有工作表作为DataFrames的字典”。然而,当我尝试像这样使用它时,我得到了一本字符串字典。

target_file = "C:\file_here.xlsx"
data = pd.read_excel(target_file) 
print(type(data))
data = pd.read_excel(target_file, sheet_name = None)
print(type(data))
#print(data)
for sheet in data:
    print(type(sheet))
Run Code Online (Sandbox Code Playgroud)

这将返回:

<class 'pandas.core.frame.DataFrame'>
<class 'collections.OrderedDict'>
<class 'str'>
Run Code Online (Sandbox Code Playgroud)

我不明白为什么后者返回字符串。我希望能够将每个工作表作为数据框访问,在该工作表(数据框)上执行字符串替换,然后使用 to_excel 将这些工作表放入新的 xlsx 文件中。但我很困惑为什么for Sheet in data:返回字符串。

如果我在下面的代码片段中打印数据(有序字典),它会将数据帧打印到控制台。所以看起来我没有正确访问字典,但我想确切地了解我做错了什么:

data = pd.read_excel(target_file, sheet_name = None)
print(type(data))
print(data)
Run Code Online (Sandbox Code Playgroud)

python pandas pandas-datareader

7
推荐指数
1
解决办法
1万
查看次数

读取股票数据时出错:“DatetimeProperties”对象没有属性“weekday_name”,“NoneType”对象没有属性“to_csv”

我尝试运行代码来获取股票数据,但失败了,显示以下错误:

'DatetimeProperties' 对象没有属性 'weekday_name'
'NoneType' 对象没有属性 'to_csv'

from pandas_datareader import data as web
import os
import pandas as pd
from pandas.testing import assert_frame_equal
Run Code Online (Sandbox Code Playgroud)
def get_stock(ticker, start_date, end_date, s_window, l_window):
    try:
        df = web.get_data_yahoo(ticker, start=start_date, end=end_date)
        df['Return'] = df['Adj Close'].pct_change()
        df['Return'].fillna(0, inplace = True)
        df['Date'] = df.index
        df['Date'] = pd.to_datetime(df['Date'])
        df['Month'] = df['Date'].dt.month
        df['Year'] = df['Date'].dt.year 
        df['Day'] = df['Date'].dt.day
        for col in ['Open', 'High', 'Low', 'Close', 'Adj Close']:
            df[col] = df[col].round(2)
        df['Weekday'] = df['Date'].dt.weekday_name  
        df['Week_Number'] = df['Date'].dt.strftime('%U')
        df['Year_Week'] = df['Date'].dt.strftime('%Y-%U')
        df['Short_MA'] …
Run Code Online (Sandbox Code Playgroud)

python pandas pandas-datareader

7
推荐指数
2
解决办法
2万
查看次数

如何将mysqldump导入Pandas

我感兴趣的是有一种简单的方法可以将mysqldump导入Pandas.

我有一些小的(~110MB)表,我想将它们作为DataFrames.

我想避免将数据放回数据库,因为这需要安装/连接到这样的数据库.我有.sql文件,并希望将包含的表导入Pandas.是否有任何模块可以执行此操作?

如果版本控制很重要.sql文件全部列出"MySQL dump 10.13 Distrib 5.6.13,for Win32(x86)"作为生成转储的系统.

事后的背景

我在没有数据库连接的计算机上本地工作.我的工作的正常流程是从第三方获得.tsv,.csv或json,并做一些将被回馈的分析.一个新的第三方以.sql格式提供了所有数据,这打破了我的工作流程,因为我需要大量的开销才能将其转换为我的程序可以作为输入的格式.我们最终要求他们以不同的格式发送数据,但出于业务/声誉的原因,他们希望首先寻找一个解决方案.

编辑:下面是两个表的示例MYSQLDump文件.

/*
MySQL - 5.6.28 : Database - ztest
*********************************************************************
*/


/*!40101 SET NAMES utf8 */;

/*!40101 SET SQL_MODE=''*/;

/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`ztest` /*!40100 DEFAULT CHARACTER SET latin1 */;

USE `ztest`;

/*Table structure for table `food_in` */

DROP TABLE IF EXISTS `food_in`;

CREATE TABLE `food_in` …
Run Code Online (Sandbox Code Playgroud)

python mysql mysqldump pandas pandas-datareader

6
推荐指数
1
解决办法
6563
查看次数

Yahoo Finance API / URL 不起作用:Pandas DataReader 的 Python 修复

:使用熊猫的DataReader的“雅虎”的方法,因为16日2017年我还没有测试此修复程序,雅虎财经雅虎财经URL一直没有访问https://pypi.python.org/pypi/fix-yahoo-finance那昨天刚刚发布,声明:“雅虎财经已停用他们的历史数据 API”。

编辑 2017 年 8 月 2 日:我已经按照https://pypi.python.org/pypi/fix-yahoo-finance 中的步骤操作:$ pip3 install fix_yahoo_finance --upgrade --no-cache-dir,将 pandas_datareader 升级为使用“fix-yahoo-finance 0.0.6”,并修改代码:

from pandas_datareader import data as pdr
import fix_yahoo_finance

data = pdr.get_data_yahoo('AAPL', start='2017-04-23', end='2017-05-24')
Run Code Online (Sandbox Code Playgroud)

请注意,最后 2 个数据列的顺序是“Adj Close”和“Volume”,即。不是以前的格式。出于我的目的,它们只是重置为原始格式:

cols = ['Date', 'Open', 'High', 'Low', 'Close', 'Volume', 'Adj Close']
data.reindex(columns=cols)
Run Code Online (Sandbox Code Playgroud)

python yahoo-finance pandas-datareader

6
推荐指数
1
解决办法
1万
查看次数

为什么pandas.read_sql 返回一个空的DataFrame?

我正在尝试从数据库中检索数据并保存到 pandas.DataFrame 中。这是我的 Python 脚本,

conn = pyodbc.connect(sql_server)
query = '''SELECT a1, a2, a3
FROM '''  + dbschema + '''.SomeResults
WHERE FactorName = \' ''' + FactorName + ''' \' AND parametername = 'Param1' ORDER BY Factor1 '''
df = pd.read_sql(query, conn)
print(df)
Run Code Online (Sandbox Code Playgroud)

然而,它返回,

Empty DataFrame
Columns: [a1, a2, a3]
Index: []
Run Code Online (Sandbox Code Playgroud)

我很确定这不是 SQL 问题,因为我可以使用 conn.cursor() 从数据库中检索数据。

python-3.x pandas pandas-datareader

6
推荐指数
1
解决办法
5484
查看次数

如何修复“ ImportError:无法导入名称'StringIO'”

python版本是3.6.6,而pandas_datareader版本是0.7.0

当我导入pandas_datareader时,发生如下错误。

C:\PycharmProjects\Demo\venv\Scripts\python.exe C:/PycharmProjects/Demo/stock.py
Traceback (most recent call last):
  File "C:/PycharmProjects/Demo/stock.py", line 3, in <module>
    import pandas_datareader as wb
  File "C:\PycharmProjects\Demo\venv\lib\site-packages\pandas_datareader\__init__.py", line 2, in <module>
    from .data import (DataReader, Options, get_components_yahoo,
  File "C:\PycharmProjects\Demo\venv\lib\site-packages\pandas_datareader\data.py", line 7, in <module>
    from pandas_datareader.av.forex import AVForexReader
  File "C:\PycharmProjects\Demo\venv\lib\site-packages\pandas_datareader\av\__init__.py", line 3, in <module>
    from pandas_datareader.base import _BaseReader
  File "C:\PycharmProjects\Demo\venv\lib\site-packages\pandas_datareader\base.py", line 11, in <module>
    from pandas.compat import StringIO, bytes_to_str
ImportError: cannot import name 'StringIO'
Run Code Online (Sandbox Code Playgroud)

有人可以帮我吗?

python stringio pandas-datareader

6
推荐指数
2
解决办法
3456
查看次数

如何修复雅虎财经 python 中新的无法读取 URL 错误

去年我一直使用此代码从雅虎财经提取(抓取)股票价格,但现在它产生了错误。有谁知道为什么会发生这种情况以及如何解决它?


# Importing necessary packages
from pandas_datareader import data as web
import datetime as dt
import matplotlib.pyplot as plt
import pandas as pd
import os
import numpy as np

# Stock selection from Yahoo Finance
stock = input("Enter stock symbol or ticket symbol (Exp. General Electric is 'GE'): ")

# Visualizing the stock over time and setting up the dataframe
start_date = (dt.datetime.now() - dt.timedelta(days=40000)).strftime("%m-%d-%Y")
df = web.DataReader(stock, data_source='yahoo', start=start_date)
#THE ERROR IS ON THIS LINE^

plt.plot(df['Close'])
plt.title('Stock Prices Over …
Run Code Online (Sandbox Code Playgroud)

python datareader yahoo-finance pandas pandas-datareader

6
推荐指数
1
解决办法
1万
查看次数

欧盟统计局的 pandas 数据挖掘

我正在开始使用 python 和 pandas 来分析来自欧盟统计局等统计机构的数据。我发现有两种方法可以从欧盟统计局获取数据。

  • pandas_datareader:看起来很容易使用,但我发现获取一些特定数据时存在一些问题
  • pandasdmx:我发现它有点复杂,但它似乎是一个有前途的解决方案,但文档很差

我使用免费的 Azure 笔记本、在线服务,但我不认为这会让我的情况变得更加复杂。

让我解释一下pandas_datareader的问题。根据 pandas 文档,在 API 部分中,有一个简短的文档包并且它可以工作。除了所示的示例(效果很好)之外,其他表也会出现问题。例如,我可以通过以下简单的代码获取有关欧洲房价的数据,其ID表是prc_hpi_a

import pandas_datareader.data as web
import datetime
df = web.DataReader('prc_hpi_a', 'eurostat')
Run Code Online (Sandbox Code Playgroud)

但该表包含三种类型的住宅数据:总计、现有和新建。我只得到现有的住宅,我不知道如何得到其他的。您有针对这些类型的过滤的解决方案吗?

其次是使用pandasdmx 的路径。这里就比较复杂了。我的想法是将所有数据上传到 pandas DataFrame,然后我可以根据需要进行分析。说起来容易,但我没有找到很多教程来解释这段话:将数据上传到 pandas 结构。例如,我找到了这个教程,但我坚持第一步,即实例化客户端:

import pandasdmx
from pandasdmx import client
#estat=client('Eurostat', 'milk.db')
Run Code Online (Sandbox Code Playgroud)

它返回:

-------------------------------------------------- ------------------------- ImportError Traceback (最近一次调用最后一次) in () 1 import pandasdmx ----> 2 from pandasdmx import client 3 estat=client('欧盟统计局', 'milk.db')

导入错误:无法导入名称“client”

这里有什么问题?我环顾四周但没有解决这个问题 …

python pandas pandas-datareader sdmx

5
推荐指数
1
解决办法
5169
查看次数

FutureWarning:pandas.util.testing 已弃用。请使用 pandas.testing 中公共 API 中的函数

我已经看到了其中几个问题以及有关这一切的一些答案,但是要么我超级愚蠢并且无法弄清楚它们的含义,要么我只是非常愚蠢并且我做错了

我使用 Pandas 和 Pandas_datareader 收到此警告

“您可能会在 pandas_datareader 中找到‘util.testing’代码,它与 pandas 是分开的。”

这是我看到的答案之一,我不明白如何修复它,我没有任何具有“until.testing”的代码,所以我不知道在它不存在时删除它并添加它什么也没做,但由于警告,我的程序无法在我的树莓派上运行,这是预期的位置。

请帮忙

python-3.x pandas pandas-datareader

5
推荐指数
1
解决办法
7701
查看次数