Python DataFrame Анализ данных большого количества данных из текстового файла - PullRequest
2 голосов
/ 03 мая 2020

У меня есть следующий код:

datadicts = [ ]
with open("input.txt") as f:
    for line in f:
        datadicts.append({'col1': line[':'], 'col2': line[':'], 'col3': line[':'], 'col4': line[':']})

df = pd.DataFrame(datadicts)
df = df.drop([0])
print(df)

Я использую текстовый файл (который не отформатирован), чтобы извлечь фрагменты данных из. Когда текстовый файл открыт, он выглядит примерно так, за исключением более крупного масштаба:

00 2381    1.3 3.4 1.8 265879 Name 
34 7879    7.6 4.2 2.1 254789 Name 
45 65824   2.3 3.4 1.8 265879 Name 
58 3450    1.3 3.4 1.8 183713 Name 
69 37495   1.3 3.4 1.8 137632 Name 
73 458913  1.3 3.4 1.8 138024 Name 

Вот что у меня не получается сделать с этими данными:

  1. Мне нужны только второй, третий, шестой и седьмой столбцы данных. Проблема с этим, я думаю, что я решил с моим кодом выше, читая отдельные строки и создавая фрейм данных с необходимыми столбцами. Я открыт для предложений, если у кого-то есть лучший способ сделать это.
  2. Мне нужно пропустить первый ряд данных. В этом случае у открытой функции нет атрибута skiprows, поэтому, когда я опускаю первую строку, я также теряю индекс, начинающийся с 0. Есть ли способ обойти это?
  3. Мне нужен итоговый фрейм данных, чтобы он выглядел как хороший чистый фрейм данных. На данный момент это выглядит примерно так:
Col1   Col2   Col3 Col4
2381    3.4 265879 Name 
7879    4.2 254789 Name 
65824   3.4 265879 Name 
3450    3.4 183713 Name 
37495   3.4 137632 Name 
458913  3.4 138024 Name 

Под столбцом все выровнено по правому краю и выглядит странно. Есть идеи как решить это?

Мне также нужно иметь возможность выполнять Statisti c Анализ столбцов данных и иметь возможность находить Имя с самыми высокими данными и самыми низкими данными, но по какой-то причине я всегда получаю ошибки, потому что я Подумайте, что, хотя у меня есть все данные, настроенные как фрейм данных, значения внутри фрейма данных читаются как объекты, а не как целые числа, строки, числа с плавающей запятой и т. д. c.

Итак , если мои данные не анализируются с использованием функций Python, кто-нибудь знает, как я могу это исправить, чтобы данные могли работать правильно?

Любая помощь будет принята с благодарностью. Надеюсь, я четко изложил все свои потребности. Я новичок в Python, и я не уверен, что использую всю правильную терминологию.

1 Ответ

1 голос
/ 04 мая 2020

Вы можете использовать функцию pandas.read_csv() для достижения sh этого очень легко .

  • txt2pd.txt - текстового файла, содержащего Копировать / вставить из вашего источника выше
  • sep использует шаблон регулярного выражения для разделения одного или нескольких последовательных пробелов
  • names использует list для создания имен столбцов
  • skiprows пропускает первую строку в соответствии с вашими требованиями

Пример:

keep = ['col1', 'col3', 'col5', 'col6']
df = pd.read_csv('txt2pd.txt', 
                 sep='\s+', 
                 names=['col0', 'col1', 'col2', 'col3', 'col4', 'col5', 'col6'], 
                 skiprows=1)
df = df[keep]

Вывод:

     col1  col3    col5  col6
0    7879   4.2  254789  Name
1   65824   3.4  265879  Name
2    3450   3.4  183713  Name
3   37495   3.4  137632  Name
4  458913   3.4  138024  Name

Анализ образца:

Используя df.describe(), вы можете вывести простой анализ высокого уровня. (Что-то еще должно быть предметом нового вопроса.)

                col1      col3           col5
count       5.000000  5.000000       5.000000
mean   114712.200000  3.560000  196007.400000
std    194048.545838  0.357771   61762.106621
min      3450.000000  3.400000  137632.000000
25%      7879.000000  3.400000  138024.000000
50%     37495.000000  3.400000  183713.000000
75%     65824.000000  3.400000  254789.000000
max    458913.000000  4.200000  265879.000000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...