python - 如何使用 Pandas 对所有 CSV 文件列和行执行数学运算

标签 python pandas numpy

这是我的代码:

all_data = pd.read_csv('data2.csv')
mu = np.array([all_data.mean(0)])
sigma = np.array([np.std(all_data,axis=0)])
print(all_data.shape)
print(mu.shape)
print(sigma.shape)

Output:

(20, 24)

(1, 24)

(1, 24)

Sigma 和 Mu 是 numpy 数组或矩阵。

我想执行这个操作:

all_data = (all_data - mu)/sigma

这里,all_data 的第一列(所有行)首先减去 mu 的第一列,然后除以 sigma 的第一列>

all_data 的第二列(所有行)首先减去 mu 的第二列,然后除以 sigma 的第二列>

像那样

最佳答案

如果您使用数据框的底层 numpy 数组,广播会为您处理工作:

(all_data.values - mu)/sigma

然后将其放回与 all_data 具有相同列/索引的数据框中:

pd.DataFrame((all_data.values - mu)/sigma, columns=all_data.columns, index=all_data.index)

示例:

在这个迷你数据框上:

all_data = pd.DataFrame(np.random.randint(0,9,(5,5)))
>>> all_data
   0  1  2  3  4
0  5  7  1  8  6
1  5  8  0  3  0
2  8  2  0  1  6
3  5  8  7  7  0
4  4  6  0  2  5

与:

mu = np.array([all_data.mean(0)])
sigma = np.array([np.std(all_data,axis=0)])

>>> mu
array([[5.6, 2. , 4. , 4.4, 7.6]])
>>> sigma
array([[1.62480768, 1.26491106, 3.40587727, 2.41660919, 0.48989795]])

您可以获得:

>>> pd.DataFrame((all_data.values - mu)/sigma, columns=all_data.columns, index=all_data.index)
          0         1        2         3          4
0 -0.369274  3.952847 -0.88083  1.489691  -3.265986
1 -0.369274  4.743416 -1.17444 -0.579324 -15.513435
2  1.477098  0.000000 -1.17444 -1.406930  -3.265986
3 -0.369274  4.743416  0.88083  1.075888 -15.513435
4 -0.984732  3.162278 -1.17444 -0.993127  -5.307228

随意检查数学,但它满足您的要求:操作应用于数据帧的第一列,第一个值为 sigmamu,第二列有第二个值,等等......

关于python - 如何使用 Pandas 对所有 CSV 文件列和行执行数学运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53378420/

相关文章:

python - FFTshift 导致振荡 - 为什么? ( NumPy 的)

python - 优化/删除循环

python - 有没有办法更有效地遍历 pandas 数据框中的行?

python - 在后台运行计时器 x 秒 [Alexa 技能]

python - 部分重命名 Pandas DataFrame 中的列

python - Pandas 系列: conditional rolling standard deviation

python - 如何在 Django 中的 HTML 表单上显示表单中的多对多字段

Python的isinstance方法结果对于子类实例是意外的

Python pandas str. 从不干净的列中提取年份信息

python - Numpy 从 2 个数组中选择元素