2017-12-15 3 views
-2

Excel 파일의 데이터를 데이터베이스로 가져와야합니다. 이러한 파일의 구조는 모델의 구조와 일치하지 않으므로 그에 따라 튜플을 배열하기 위해 데이터 조작을해야합니다.비정형 파일을 데이터베이스로 가져 오기

파일은이 같은 모양을 가져올 수 있습니다 excel file

장고 모델 다음과 같은 특성이있다 : 국가, 상품을, 년도, 가격

그래서를 읽을 수있는 가장 좋은 방법 일 것입니다 무슨 데이터를 올바른 구조로 정렬하고 데이터베이스로 가져옵니다 (가능하면 기존 튜플의 자동 업데이트로).

PyExcel, Pandas, Django-Excel, Django-Import-Export와 같은 기존 Python 및 Django 라이브러리를 연구하는 데 많은 시간을 보냈지 만 실제로는 가져 오기 전에 데이터의 재배치를 지원하는 경우 가장 좋습니다.

나는이 작업 :

+0

"데이터베이스"란 무엇입니까? 파일을 데이터베이스에 업로드하고 있습니까? 아니면 일종의 분석을해야합니까? 지금까지 뭐 해봤 어? – Evan

+0

@ Evan 필자는 파일에서 데이터를 데이터베이스로 가져오고 분석 할 필요가 없습니다. 그러나 위에서 언급했듯이 데이터 세트가 매년 분리되지 않기 때문에 수동으로 구조를 조정해야합니다. 기본적으로 필자는 일부 라이브러리를 통해 데이터 구조 (배열 또는 dict)로 Excel 데이터를 읽은 다음이 배열을 편집/적용한 다음 db로 입력하는 것이 가장 좋을 것이라고 생각합니다. 불행히도 내가 언급 한 라이브러리에서 이것에 대한 정보를 찾지 못했습니다. – thimma

+0

당신이 말한 바에 따르면, 나는 팬더 라이브러리와 그 read_excel() 함수를 사용할 것을 권한다.데이터 프레임을 생성하고 조작하고 CSV 또는 데이터베이스 (예 : SQL)로 출력 할 수 있지만 데이터베이스가 무엇인지 알려주지 않으면 도움을 줄 수는 없습니다. – Evan

답변

0

가 좋아, 몇 가지 나에게 몇 가지 권장 사항 및 솔루션을 제공 할 수 있기를 바랍니다. 나는 그들 중 어느 누구도 전문가가 아니다.

먼저 데이터가 Excel 파일 인 경우 구조화되어 있습니다. 테이블의 특성은 데이터를 구조화하는 것입니다. 구조화되지 않은 데이터는 텍스트 파일이나 텍스트 파일의 디렉토리와 유사합니다. 질문을 공식화 할 때

둘째,이를 읽고 그것을 따르십시오 https://stackoverflow.com/help/mcve

셋째, SO 당신을 위해 모든 코드를 작성하는 여기에 없습니다. 귀하의 질문에 대해, 당신은 아직 아무것도 시도하지 않았기 때문에 귀하의 질문에 대한 답변이 내려졌습니다.

필자는 파이썬의 팬더 라이브러리를 사용하여 Excel 파일을 가져 와서 조작하고 SQL 데이터베이스에 업로드 할 수 있습니다.

import pandas as pd 

df = pd.read_excel('tmp.xlsx') 
df2 = pd.melt(df, id_vars = ['Country', 'Commodity'], var_name = 'Year', value_name = 'Value') 
df2 

입력 :

Country Commodity 2009 2010 2011 2012 2013 
0 Austria Com. 1  1  1  1  1  1 
1 Austria Com. 2  2  2  2  2  2 
2 Belgium Com. 1  3  3  3  3  3 
3 France Com. 1  4  4  4  4  4 

출력 : 당신이 많은 엑셀 파일이있는 경우

Country Commodity Year Value 
0 Austria Com. 1 2009  1 
1 Austria Com. 2 2009  2 
2 Belgium Com. 1 2009  3 
3 France Com. 1 2009  4 
4 Austria Com. 1 2010  1 

, 당신은 glob 또는 os.walk 디렉토리를 통해 /를 통해 반복하고 가져 오는 데 사용할 수있는 몇 가지 또는 모든 Excel 파일.

팬더 DataFrame.to_sql을 사용하여 데이터베이스 연결 (서버 주소, 로그인/pw 등)을 정의해야하는 SQL 데이터베이스에 데이터를 업로드 할 수 있습니다.

+0

감사합니다. 지금까지 잘 작동합니다. 불행히도 나는 다른 문제를 발견했습니다. Excel 파일에는 건너 뛸 끝 부분에 몇 가지 정보가 있습니다. 이 줄 수는 파일마다 다릅니다. 이 정보의 시작 부분은 특정 키워드가있는 행으로 식별됩니다. 나는 pandas의 인덱싱과 특정 행을 생략/삭제하는 방법에 대해 많이 연구했지만 다음 정보를 찾을 수는 없었습니다. 특정 행으로 시작하는 모든 행을 건너 뛰거나 삭제하는 방법은 무엇입니까? – thimma

+0

그 자체의 스레드 스택 오버 플로우에 잘 맞는 특정 질문입니다. 특히 기존 질문 사이에서 대답을 찾을 수없는 경우에 특히 그렇습니다. 즉, 몇 초 동안 Google 검색에서 발견 된 몇 명이 있습니다. https://chrisalbon.com/python/pandas_selecting_rows_on_conditions.html https://stackoverflow.com/questions/27275236/pandas-best- way-to-select-all-columns-with-x https://www.reddit.com/r/learnpython/comments/5zn29l/pandas_how_to_best_search_for_a_keyword_within/ – Evan

관련 문제