2013-12-17 2 views
0

Я пытаюсь взять txt-файл размером 1,8 мБ. После этого есть пара строк заголовка, все данные, разделенные пробелом. Я могу вытащить данные с помощью панд. Что я хочу делать с данными:Python: Правильно ли использовать панды?

1) Вырежьте несекретные данные. т.е. первые 1675 строк, которые я хочу удалить, и последние 3-10 строк, меняются изо дня в день, я также хочу удалить. Я могу удалить первые строки, вроде. Большая проблема с этой идеей, которую я имею прямо сейчас, точно знает, где находится указатель 1675. Используя что-то вроде

df = df[df.year > 1978] 

перемещает только начальный «указатель» на 1675 Если я пытаюсь

dataf = df[df.year > 1978] 

он просто дает мне чистую копию того, что я бы с первой линией. Он по-прежнему сохраняет указатель на ту же самую начальную точку 1675. Это не позволит мне получить доступ к любому из первых 1675 строк, но они все еще явно существуют.

df.year[0] 

Он возвращается с ошибкой, предполагая, что строка 0 не существует. Мне нужно выйти и искать, чтобы найти то, что первая читаемая строка ... вместо того, чтобы удалять строки и перемещать новый указатель до 0, просто перемещает указатель на 1675 и не позволит доступ к чему-либо ниже, чем что. Я до сих пор не нашел способ определить, что последний номер строки через программирование, через оболочку легко, но мне нужно сделать это через программу, чтобы я мог настроить цикл для пункта 2.

2) Я хочу, чтобы иметь возможность принимать средние данные, скользящие средние числа «x» и создавать новый столбец с новыми данными, как только я вычислил скользящую среднюю. Я думаю, что я могу создать новый столбец с помощью инструкции Series ... Я думаю ... Я еще не пробовал, хотя, как я еще не смог это сделать.

3) После всей этой и еще одной математики я хочу, чтобы иметь возможность графа данных с самодельным графиком. Я думаю, что это должно быть легко, как только я закончу все остальное. Я уже создал образец графа и может начертить точки/линии на графике, как только у меня будут данные для работы.

Является ли панда правом lib для проекта или я должен пытаться использовать что-то еще? До сих пор больше исследований я делаю ... чем больше потерял, тем больше у меня получается, потому что все, что я пытаюсь, дает мне немного дальше, но меня еще больше возвращает в одно и то же время. В чем-то подобном я видел упоминание использования чего-то еще, когда вы хотите сделать математику в блоке данных. Их не было никаких указаний относительно того, что он использовал.

+0

Это звучит как панды действительно поможет, но на данный момент мы не можем помочь, поскольку там слишком много частей на этот вопрос и не пример ... –

ответ

0

Я думаю, что вы направляетесь в правильном направлении. Pandas дает вам хороший, высокий уровень контроля над вашими данными, чтобы вы могли манипулировать им гораздо легче, чем использовать традиционную логику. Для изучения потребуется определенная работа. Работайте через их учебники, и вы должны быть в порядке. Но не глянцевайте их, иначе вы пропустите некоторые важные детали.

Я не уверен, почему вас беспокоит, что строки, которые вы хотите игнорировать, не удаляются, если они не используются в вашем анализе, это не имеет большого значения. Если вы не сталкиваетесь с ограничениями памяти, это, вероятно, не имеет значения. Но, если вы обнаружите, что не можете позволить себе их держать, я уверен, что есть способ действительно удалить их, даже если это немного боком.

Обработка данных на несколько мегабайт данных в наши дни довольно проста, и Pandas без проблем справится с этим. Я считаю, что вы можете легко передать данные pandas в numpy для своих статистических вычислений. Однако вы должны проверить это, прежде чем взять мое слово. Кроме того, они упоминают matplotlib на веб-сайте pandas, поэтому я предполагаю, что будет легко сделать базовое графическое отображение.

+0

Как вы идете по поводу говорить, что такое начало точка - это когда вы «обрезаете» строки/строки. Я знаю, что я уже пробовал идею для диапазона in (0, df) только для того, чтобы получить ошибку, что это не целое число. Как получить доступ к диапазону данных. Мне нужно знать как новую стартовую строку, так и последнюю строку. – confused

1

Звучит так, как будто основная проблема заключается в индексировании. Если вы хотите сослаться на «первую» вещь в DataFrame, используйте df.iloc[0]. Но индексы DataFrame действительно эффективны независимо.

http://pandas.pydata.org/pandas-docs/stable/indexing.html

+0

Если я иду df.iloc [0], все, что у меня заканчивается с объектом DataFrame, не имеет атрибута 'iloc'. Если я пойду df, то появится ключевая строка Int64Index: 12766 записей, с 1675 по 14440. Очевидно, что-то есть. Как узнать, что 1675 - это первая строка с «полезными» данными, а 14440 - последняя строка? Я хочу иметь возможность делать это через программу, а не через оболочку. То, что я хочу написать, является автономной программой, а не оболочкой. – confused

+0

Если 'iloc' не существует, вы можете быть в старой версии панд. – U2EF1

+0

@confused upgrade pandas 0.12 стабилен, 0.13rc также доступен. –

Смежные вопросы