Mau*_*rus 5 python mean tabular
我正在使用 Python 2.7 (Anaconda) 来处理表格数据。我加载了一个包含两列的文本文件,例如
[[ 1. 8.]
[ 2. 4.]
[ 3. 1.]
[ 4. 5.]
[ 5. 6.]
[ 1. 9.]
[ 2. 0.]
[ 3. 7.]
[ 4. 3.]
[ 5. 2.]]
Run Code Online (Sandbox Code Playgroud)
我的目标是计算第二列中与第一列中唯一值匹配的所有值的平均值,例如,1 的平均值为 8.5,2 的平均值为 2,3 的平均值为 4。首先,我通过提取列并应用 np.unique() 导致数组“唯一”过滤掉了第一列中的唯一值。我创建了一个在定义唯一值时起作用的循环:
mean= 0
values=[]
for i in range(0,len(first),1):
if first[i]==1:
values.append(second[i])
print(np.mean(values))
Run Code Online (Sandbox Code Playgroud)
其中第一和第二是特定的列。现在我想让这不那么具体。我试过
mean = 0
values = []
means=[]
for i in unique:
for k in range(0,len(first),1):
if first[k]==i:
values.append(second[k])
mean = np.mean(values)
means.append(mean)
mean=0
values=[]
print(means)
Run Code Online (Sandbox Code Playgroud)
但它只返回原始的第二列。有人知道如何使此代码非特定吗?实际上,我有大约 70k 行,所以我不能手动完成。
在 pandas 中,您可以通过使用groupby来实现这一点:
In [97]: data
Out[97]:
array([[ 1., 8.],
[ 2., 4.],
[ 3., 1.],
[ 4., 5.],
[ 5., 6.],
[ 1., 9.],
[ 2., 0.],
[ 3., 7.],
[ 4., 3.],
[ 5., 2.]])
In [98]: import pandas as pd
In [99]: df = pd.DataFrame(data, columns=['first', 'second'])
In [100]: df.groupby('first').mean().reset_index()
Out[100]:
first second
0 1.0 8.5
1 2.0 2.0
2 3.0 4.0
3 4.0 4.0
4 5.0 4.0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4565 次 |
| 最近记录: |