我是一个蟒蛇初学者 . 我有一个如下字典:
{'Clinton': [{'ideology': -0.5, 'vote':80}, {'ideology': -0.75, 'vote':90},
{'ideology': -0.89, 'vote': 99},
{'ideology': -0.5, 'vote':80, 'review': "She is a presidential candidate"}],
'Alexander': [{'ideology': -0.1, 'vote':50}, {'ideology': -0.95, 'vote':20},
{'ideology': -0.19, 'vote': 19}, {'ideology': -0.2, 'vote':30, 'review': "Good"}]
... }
我想将这个字典转换成一个numpy矩阵,比如将名称创建为一列,如:
Name ideology vote review
Clinton -0.5 80
Clinton -0.75 90
Clinton -0.89 99
Clinton -0.5 80 "She is a presidential candidate"
Alexander -0.1 50
Alexander -0.95 20
Alexander -0.19 19
Alexander -0.2 30 "Good"
如何将此字典转换为numpy矩阵?
我遇到的一个问题是数据有超过百万的观察结果 . 所以循环它将需要时间永远 . 我想使用字典作为岭回归的特征向量 .
2 回答
由于您的数据来自
json
文件,您可以使用read_json()函数将其加载到Pandas中 . 这将创建一个包含所需列的数据框 . 要运行岭回归,您可以使用scikit中的Ridge类学习(更多信息here) . 作为Python初学者,值得学习熊猫和scikit . 它们是用于数据分析和挖掘的流行软件包,将为您提供所需的大多数工具 . 结合两个站点上的示例:这只是一个粗略的例子 . 我可能会翻转你的x轴和y轴,并且所有配置都出错了 . 您可能需要通过
pandas.read_json()
的orient
参数提供格式字符串 . 话虽如此,这应该会让您了解在阅读相关文档后如何开始 .这是一个开始 . 我不担心速度(Ipython with python3.4)
要创建一个记录数组,我需要一个元组列表,每个元组都有一个每个字段的值 . 具有键值对的第一个记录 . 但 Value 是一个清单 .
(这些值列表显然是使用带有列表追加的默认字典的结果 . 这是构建字典的一种很好的方法,但不幸的是,对于数组我们必须解压缩它 . )
更好 - 具有3个字段的元组列表列表:
添加可能缺少的
review
字段要在列表中展平列表,请使用intertools链
定义一个dtype:
看起来不错 . 在最后一个数组创建步骤中没有迭代 . 将字典转换为元组列表时有一个迭代 . 但是在使用字典时,这种迭代是不可避免的 .