Как выполнять математические операции со всеми столбцами и строками CSV-файла с помощью Pandas - PullRequest
0 голосов
/ 19 ноября 2018

Вот мой код:

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)

Выход:

(20, 24)

(1, 24)

(1, 24)

Сигма и Му являются массивом или матрицей.

Я хочу выполнить эту операцию:

all_data = (all_data - mu) / sigma

Здесь первый столбец (все строки) all_data сначала вычитается из первого столбца mu, а затем делится на первый столбец sigma

второй столбец (все строки) all_data сначала вычитается из второго столбца mu, а затем делится на второй столбец sigma

Вот так

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

как насчет numpy.matlib.repmat?

df = pd.DataFrame(numpy.random.rand(20, 24))
mu = np.array([all_data.mean(0)])
sigma = np.array([np.std(all_data,axis=0)])

MU = pd.DataFrame(numpy.matlib.repmat(mu,20, 1))
SIGMA = pd.DataFrame(numpy.matlib.repmat(sigma,20, 1))
all_data = (all_data - MU)/SIGMA
0 голосов
/ 19 ноября 2018

Если вы работаете с базовыми массивами вашего фрейма данных, вещание позаботится о вас за вас:

(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

Не стесняйтесь проверять математику, но она удовлетворяет вашим требованиям: операция применяется к первому столбцу информационного кадра с первыми значениями sigma и mu,второй столбец со вторыми значениями и т.д ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...