python - 字典到数组的转换,其中数据帧不产生正确的行输出
问题描述
以下数据代表 40 个晶体管样本的寿命(以小时为单位):
112, 121, 126, 108, 141, 104, 136, 134
121, 118, 143, 116, 108, 122, 127, 140
113, 117, 126, 130, 134, 120, 131, 133
118, 125, 151, 147, 137, 140, 132, 119
110, 124, 132, 152, 135, 130, 136, 128
给出这些数据的累积相对频率图
我的方法
首先,我创建一个数据集数组
然后我找出数组中每个数字的频率
然后我创建两个列表来保存数据的值及其频率
我的代码:
LifeTime = [112, 121, 126, 108, 141, 104, 136, 134,
121, 118, 143, 116, 108, 122, 127, 140,
113, 117, 126, 130, 134, 120, 131, 133,
118, 125, 151, 147, 137, 140, 132, 119,
110, 124, 132, 152, 135, 130, 136, 128]
# initializing dict to store frequency of each element
dict_fre = {}
# iterating over the elements for frequency
for element in LifeTime:
if element in dict_fre:
dict_fre[element] += 1
else:
dict_fre[element] = 1
#code to store the keys and their corresponding values to the list
keys_list=[]
val_list=[]
for i,j in dict_fre.items():
keys_list.append(i)
val_list.append(j)
接下来,我使用 Pandas 创建一个数据框并将 keys_list 和 val_list 保存为字典,以便我可以计算相对频率,然后计算相对累积频率。然后我将绘制这些数据。
数据框
import pandas as pd
d = {'life':[keys_list],'frequency':[val_list]}
df = pd.DataFrame(d)
我得到了这个输出
life frequency
0 [112, 121, 126, 108, 141, 104, 136, 134, 118, ... [1, 2, 2, 2, 1, 1, 2, 2, 2, 1, 1, 1, 1, 2, 1, ...
但我想得到这样的东西
life frequency
112 1
121 2
126 2
108 2
我怎样才能修改我的代码以获得期望的输出?
解决方案
改变这个
d = {'life':[keys_list],'frequency':[val_list]}
对此
d = {'life':keys_list,'frequency':val_list}
您的问题是通过[keys_list]
在列表中有效地拥有一个元素(列表)并且您只得到一行。
更好的是,您可以直接从频率字典中设置数据框。
df = pd.DataFrame(dict_fre.items(), columns=['life', 'frequency'])
为了做得更好,请使用 Python 提供的函数来计算可迭代的频率。
from collections import Counter
df = pd.DataFrame(Counter(LifeTime).items(), columns=['life', 'frequency'])
推荐阅读
- node.js - 在数组中查找元素告诉我参数必须是对象
- scala - 如何读取带有可变分隔符的 ASCII 文件?
- c++ - C++ 指针危险?如何为 Arduino 成功创建更通用的 i2c/TWI 库?
- php - 按匹配字符串的字段排序
- python-3.x - 如何将 itertools 用于嵌套循环?
- java - WSO2 身份服务器无法使用自定义联合身份验证器
- c++ - 如果 C++ 应用程序与模板重的库链接,是否在编译应用程序时重新编译库中的所有模板定义?
- wordpress - Wordpress.org 在此服务器上找不到请求的 URL
- c# - 在 C# .NET Core 的断言有效负载中使用自定义数据为 3rd 方应用程序创建 SAML 断言
- jboss7.x - HornetQ 中的 JBoss EAP 6.4 集群虽然它们在不同的盒子里