2013-08-24 3 views
0

저는 python 패키지 xlrd 및 xlwt를 사용하여 Python을 사용하여 Excel 스프레드 시트를 읽고 쓰고 있습니다. 비록 내 문제를 해결하기 위해 코드를 작성하는 방법을 알아낼 수 없습니다.Python 프로그래밍 접근법 - Excel에서 데이터 조작

그래서 내 데이터는 상태 약어의 열과 1에서 7까지의 숫자로 이루어진 열로 구성됩니다. 상태 당 약 200-300 개의 항목이 있으며, 1, 2, 3 등의 수를 계산하고 싶습니다. on은 각 상태마다 존재합니다. 나는 이것을 알아 내기 위해 어떤 방법을 사용하는지 고심하고있다.

정상적으로 나는 이미 가지고있는 코드를 게시하지만 어디서부터 시작해야할지 모르겠다.

+0

이 분명히 세 부분으로 구분 : 엑셀이 목록의 목록과 같은 몇 가지 파이썬 구조로 파일에서 (1) 데이터를 읽습니다. (2) 데이터가 CSV 파일 또는 리터럴로 구성된 경우와 동일한 방식으로 처리합니다. (3) 출력하고자하는 것을 출력하십시오. 어느 부분에 붙어 있습니까? – abarnert

+0

필자가 조언하는 유일한 방법은'pywin32'를 사용하고 COM을 통해 Excel을 구동하는 것입니다. 그리고 손으로하지만 파이썬을 사용하면됩니다. –

답변

0
  1. 결과를 저장할 사전을 준비하십시오.
  2. xlrd를 사용하는 데이터가있는 행 번호를 가져온 다음 각 행을 반복합니다.
  3. 각 상태 코드에 대해 in이 아닌 경우 dict로도 만듭니다.
  4. 두 번째 열에서 읽은 항목이 결과 dict의 상태 키 내에 있는지 확인합니다.

    4.1 그렇지 않은 경우, dict로도 작성하고 두 번째 열에있는 번호를이 dict의 키로 추가합니다 (값 1).

    4.2 그렇다면 해당 키의 값을 증가시킵니다 (+1).

반복이 완료되면 결과 dict에는 각 개별 상태에 대한 개별 항목의 개수가 표시됩니다.

0

나는이 부분의 쉬운 부분을 알고 파이썬을 목록 목록으로 읽는 방법을 이미 알고 있다고 가정합니다. 이 같은, 당신이있어 뭔가 : 각 번호, 그 번호가 나타납니다 횟수의 카운트, 각 상태에 대해 원하는

이제
data = [['CA', 1], 
     ['AZ', 2], 
     ['NM', 3], 
     ['CA', 2]] 

. 그래서 :

counts = {} 
for state, number in data: 
    counts.setdefault(state, collections.Counter())[number] += 1 
+0

이것은 완벽합니다. Counter 객체 나 collections.Counter()에 대해서는 전혀 알지 못했습니다. 그러나 "가져 오기 모음"과 "모음 가져 오기 카운터"를 추가 한 후에이 오류가 발생합니다. TypeError : unhashable type : 'Counter' 내 Google 검색이 실패했습니다. –

+0

@ aloe-sarah : 죄송합니다. 키와 값을'setdefault'에 전달할 필요가 있습니다. 그리고 키를 남겨 둡니다. 지금 시도해보십시오. – abarnert