2014-03-10 4 views
2

У меня есть 500 + огромные json-файлы размером 400 МБ, которые в сжатом формате (3 Gigs, если они несжаты). Я использую стандартную библиотеку json в python 2.7 для обработки данных, а время для этого слишком много, и я думаю, что json.loads() является основным виновником потребления времени. Я имею в виду использование pandas в python для загрузки данных из файлов gzip и выполнения анализа.Использование pandas для загрузки огромных json-файлов

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

NB: Конечно, я могу распараллелить работу и добиться скорости, и все же я нахожу вещи в значительной степени отстающими.

Кроме того, добавление данных путем чтения с gzip.open(), а затем преобразование json в словарь с json.loads(), а затем хранение в sqlite3, поможет мне в любом случае для анализа furthur.

JSON пример записи:

{"created_at":"Sun Dec 01 01:19:00 +0000 2013","id":406955558441193472,"id_str":"406955558441193472","text":"Todo va a estar bn :D","source":"\u003ca href=\"http:\/\/blackberry.com\/twitter\" rel=\"nofollow\"\u003eTwitter for BlackBerry\u00ae\u003c\/a\u003e","truncated":false,"in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":483470963,"id_str":"483470963","name":"katheryn Rodriguez","screen_name":"katheryn_93","location":"","url":null,"description":"No pretendo ser nadie mas y no soy perfecta lo se, tengo muchos errores tambi\u00e9n lo se pero me acepto y me amo como soy.","protected":false,"followers_count":71,"friends_count":64,"listed_count":0,"created_at":"Sun Feb 05 02:04:16 +0000 2012","favourites_count":218,"utc_offset":-21600,"time_zone":"Central Time (US & Canada)","geo_enabled":true,"verified":false,"statuses_count":10407,"lang":"es","contributors_enabled":false,"is_translator":false,"profile_background_color":"DBE9ED","profile_background_image_url":"http:\/\/a0.twimg.com\/profile_background_images\/378800000116209016\/ff11dc9f5a2e05d2800a91cff08c2c73.jpeg","profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/378800000116209016\/ff11dc9f5a2e05d2800a91cff08c2c73.jpeg","profile_background_tile":true,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/378800000736604157\/b6d36df6332a2cacb0d30b5328b668d6_normal.jpeg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/378800000736604157\/b6d36df6332a2cacb0d30b5328b668d6_normal.jpeg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/483470963\/1385144720","profile_link_color":"9D1DCF","profile_sidebar_border_color":"FFFFFF","profile_sidebar_fill_color":"E6F6F9","profile_text_color":"333333","profile_use_background_image":true,"default_profile":false,"default_profile_image":false,"following":null,"follow_request_sent":null,"notifications":null},"geo":null,"coordinates":null,"place":null,"contributors":null,"retweet_count":0,"favorite_count":0,"entities":{"hashtags":[],"symbols":[],"urls":[],"user_mentions":[]},"favorited":false,"retweeted":false,"filter_level":"medium","lang":"es"} 

и иногда вы можете найти записи JSon из рода:

{"delete":{"status":"id":380315814080937984,"user_id":318430801,"id_str":"380315814080937984","user_id_str":"318430801"}}}

+0

Это зависит от того, как выглядят файлы json. Если бы вы могли показать, какие записи в json, я бы мог прокомментировать. – chthonicdaemon

+0

@chthonicdaemon, я обновил вопрос по вашему запросу, его в основном данные из твиттера. Мне интересно знать, что любые более быстрые способы обработки данных, такие как использование read_json в pandas, будут полезны. –

+0

Я думаю, что из-за гнездования и различий между записями, что DataFrame не подходит для этих данных. Возможно, вы захотите использовать что-то вроде MongoDB. – chthonicdaemon

ответ

0

3 ГБ JSON файлы будут огромными, когда хранятся в виде вложенной dicts в питоне, наиболее вероятно, во много раз больше, следовательно, используя много памяти. Посмотрите, как увеличивается использование памяти во время загрузки одного из этих файлов, и вы, скорее всего, заметите, что ваш компьютер начинает замену.

Вам нужно либо разобрать каждую строку как json (если они есть), либо разбить файлы на более мелкие куски.

+0

Я читаю только по строкам. Я не загружаю весь файл в память. –

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