Столбец в Dataframe не печатается с заданной десятичной точностью - PullRequest
0 голосов
/ 02 февраля 2020

Я создал скрипт, который считывает данные из файла CSV, нормализует столбцы и выводит результат.

Почему #friends_normalized отображается иначе, чем в других столбцах, даже если я применил одинаковые форматеры?

Проблема возникает только при печати кадра данных. Массив numpy печатается нормально.

import pandas as pd
import numpy as np

pd.set_option('display.max_rows', 500)
pd.set_option('display.max_columns', 500)
pd.set_option('display.width', 1000)
np.set_printoptions(precision=10)
np.set_printoptions(suppress=True)
np.set_printoptions(formatter={'float': '{: 0.10f}'.format})

df = pd.read_csv("data.csv")


def normalize(name):
    y = np.copy(df[name]).astype(np.float64)
    y -= y.min()
    y /= y.max()
    df[name + '_normalized'] = y
    print(np.sort(y))

normalize('#followers')
normalize('#friends')
normalize('#listed')
normalize('#statuses')

print(df[['#followers','#friends','#listed','#statuses','#followers_normalized','#friends_normalized','#listed_normalized','#statuses_normalized']])

Вывод:

[ 0.0000000000  0.0000000000  0.0000000178 ...  0.6430196814  0.9648524716
  1.0000000000]
[ 0.0000000000  0.0000000000  0.0000000000 ...  0.5465560772  0.5478126126
  1.0000000000]
[ 0.0000000000  0.0000000000  0.0000000000 ...  0.2394336344  0.4004638550
  1.0000000000]
[ 0.0000000000  0.0000000000  0.0000000000 ...  0.7691165372  0.8793119281
  1.0000000000]
      #followers  #friends  #listed  #statuses  #followers_normalized  #friends_normalized  #listed_normalized  #statuses_normalized
0         121699         1     1951       1420               0.001083         8.988093e-07            0.003418              0.002037
1           5268       980      433       5895               0.000047         8.808332e-04            0.000758              0.008458
2           3909       215       28       3429               0.000035         1.932440e-04            0.000049              0.004920
3           1796      1002       42       4844               0.000016         9.006070e-04            0.000074              0.006950
4           2227       188      155       1440               0.000020         1.689762e-04            0.000272              0.002066
...          ...       ...      ...        ...                    ...                  ...                 ...                   ...
1416      176933     44628     3295     266338               0.001575         4.011206e-02            0.005772              0.382141
1417       17163     13719      792       6233               0.000153         1.233077e-02            0.001387              0.008943
1418        2642      3184       12        832               0.000024         2.861809e-03            0.000021              0.001194
1419        1651      1825        1         61               0.000015         1.640327e-03            0.000002              0.000088
1420        2993      2481       29       2402               0.000027         2.229946e-03            0.000051              0.003446

Ответы [ 2 ]

0 голосов
/ 02 февраля 2020

Вы можете установить опцию печати только для numpy, а не для pandas. Включить эту строку с другими set_options:

pd.set_option('display.float_format', lambda x: '%.5f' % x)
0 голосов
/ 02 февраля 2020

Проблема форматирования была решена путем указания параметра форматирования также для pandas.

pd.options.display.float_format = '{:,.10f}'.format

Интересно, что другие столбцы были отформатированы правильно, а #friends_normalized - нет.

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