2016-03-02 3 views
0

У меня есть файл CSV с более чем 400k строк и около 20 столбцов, поэтому мне требуется слишком много времени для поиска CSV, когда я ищу определенное значение. Мне было интересно, как я могу сопоставить файл, чтобы я мог эффективно и быстро искать его для определенного значения.Как я могу индексировать файл CSV для эффективного поиска?

Спасибо заранее! Я рад ответить на любые вопросы!

+0

Вы пробовали отображение памяти или с помощью базы данных SQL? – freddiev4

+0

Нет! Я совсем не знаком с вариантами БД. –

+0

как вы собираетесь искать? знаете ли вы, в каком столбце искать или вы хотите искать текст во всех столбцах (например, в текстовом файле)? – MaxU

ответ

1

Предполагая, что вы можете хранить все это в ОЗУ (например, загрузите его) Я бы использовал панды.

import pandas as pd 
csv_loc = 'C:/yourcsv.csv' 
df = pd.read_csv(csv_loc, sep=',', header=0) #http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html 
df['name'] # would select a column called name 
# This would show observations which start with STARBUC 
match = df['name'].str.contains('(^STARBUC)') 
print(df['name'][match].value_counts()) 

Etc. This is a great tutorialand this

+0

Итак, как бы я искал строку в целом csv? –

3

Функция pandas.read_csv делает ее довольно простой. У Python тоже есть csv reading/writing functions.

Обновление: здесь a link to a post от создателя pandas при быстром поиске в pandas.

+0

Я пробовал использовать встроенный модуль чтения CSV, но, как я намекнул на вопрос, он слишком длительный! –

+0

++ для ссылки на pd.searchsorted() - я этого не знал. – MaxU

2

Если бы я делал что-то вроде этого, я бы загрузил файл cvs в файл базы данных SQLite, а затем использовал привязки python для SQLite для поиска данных. SQLite является бесплатным и широко используется, поэтому вы можете легко найти поддержку, фрагменты кода и т. Д. Этот подход требует некоторых базовых концепций баз данных, в основном простых операторов SQL.

+0

Как загрузить файл CSV в файл SQLite? –

+0

Учебник по SQLite выходит за рамки вопроса SO ... Но такие обучающие программы легко найти. Установите SQLite и попробуйте, у вас будет ваше решение через пару часов. – mhopeng

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