【问题标题】:Correlating values of dictionary - 'dict' object has no attribute 'corr'关联字典的值 - 'dict' 对象没有属性 'corr'
【发布时间】:2021-07-24 09:27:54
【问题描述】:

我是 python 新手,我正在尝试使用字典和相关性。我试图更好地理解使用字典。但是当我尝试关联每年的字典值时出现错误,所以从 2010 年到 2021 年。

data = {}
for year in names:
    tableName = category+str(year)
    n = ', '.join(f'"{name}"' for name in names[year])
    sqlQ = f'select "Date", {n} from {tableName};'
    cur.execute(sqlQ)
    res = cur.fetchall()
    data[year] = {}
    for row in res:
        if row[0] in dateRange and row[0].year == year:
            date = row[0].strftime("%d/%m/%Y")
            data[year][date] = []
            for i in range(1, len(row)):
                data[year][date].append(float(row[i]))
data

{2010: {'01/01/2010': [18.16, 59.73, 218.41, 101.14, 44.15, 10.0, 134.52, 40.15, 7.53, 18.19, 24.2, 10.38, 25.6, 48.17, 18.44, 32.1, 9.11, 39.73, 88.16, 23.97, 14.19, 15.34, 45.86, 24.25, 39.83, 43.46, 8.07, 9.8, 7.87, 32.73, 13.57, 39.04, 18.68, 11.55, 22.67, 52.97, 106.15, 47.49, 34.16, 26.67, 61.96, 54.09, 7.24, 14.94, 78.03, 19.31, 34.36, 10.9, 10.73, 35.27, 16.1, 37.61, 16.61, 48.65, 38.12, 26.78, 104.99, 26.73, 22.46, 30.68, 30.7, 65.09, 50.28, 80.31, 19.91, 32.27, 62.5, 6.03, 9.14, 16.16, 24.53, 33.29, 53.25, 168.84, 10.68, 130.9, 30.12, 23.01, 23.49, 80.66, 58.73, 9.15, 16.52, 96.83, 35.17, 15.11, 21.64, 23.39, 24.24, 26.93, 42.85, 24.18, 61.75, 80.98, 30.48, 40.68, 26.06, 3.81, 30.5, 13.9],“2010 年 4 月 1 日”:[18.37, 61.71, 223.96, 102.92, 45.26, 10.28, 133.9, 41.73, 7.64, 18.89, 24.28, 10.38, 25.68, ...

import pandas as pd
df = data
for key, value in df.items():
    #print(key,value)
    df.corr(method ='pearson')

AttributeError: 'dict' 对象没有属性 'corr'

【问题讨论】:

  • 如果你想使用 pandas,你必须从字典中创建一个或多个数据框。
  • 你能告诉我们数据初始化吗?
  • @DonKnacki 完成! :)

标签: python pandas dictionary


【解决方案1】:

您必须将字典存储在 pandas 的数据框中 df = pd.DataFrame(data)

import pandas as pd
for key, value in data.items():
    print(key)
    df = pd.DataFrame(value)
    print(df.corr(method ='pearson'))

【讨论】:

  • 那么它只得到 2010 年的第一个键而不是其余的,我可以看到其余数据的值是 NaN - TypeError: corr() missing 1 required positional argument: 'other'
  • @fallenmcmullan,将数据框放入循环中是否可以解决问题?请查看更新后的代码
  • 我得到了很多空数据集然后@imdevskp
  • 您介意在问题中添加data.keys()data[2010].keys() 的输出
  • 它打印 dict_keys([2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020]) dict_keys(['01/01/2010', '04/ 01/2010'、'05/01/2010'、'06/01/2010'、'07/01/2010'、'08/01/2010'、'11/01/2010'、'12/01/ 2010'、'13/01/2010'、'14/01/2010'、'15/01/2010'、'18/01/2010'、'19/01/2010'、'20/01/2010' , '21/01/2010', '22/01/2010', '25/01/2010', 但在 2010 年底结束
猜你喜欢
  • 2018-08-03
  • 2017-06-14
  • 1970-01-01
  • 2017-03-30
  • 2012-01-12
  • 2021-03-08
  • 2017-05-12
  • 2019-03-11
  • 1970-01-01
相关资源
最近更新 更多