programing

Excel 시트에서 정확히 지정된 범위를 판독하는 Python Panda 데이터 프레임

magicmemo 2023. 4. 11. 21:54
반응형

Excel 시트에서 정확히 지정된 범위를 판독하는 Python Panda 데이터 프레임

다양한 테이블(및 엑셀 시트의 기타 비정형 데이터)을 보유하고 있습니다.A3: 범위를 벗어난 데이터 프레임을 만들어야 합니다.Excel 시트 'data'의 'Sheet2'에서 D20'을 클릭합니다.

시트 수준까지 드릴다운되는 모든 예제는 정확한 범위에서 선택하는 방법은 아닙니다.

import openpyxl
import pandas as pd

wb = openpyxl.load_workbook('data.xlsx')
sheet = wb.get_sheet_by_name('Sheet2')
range = ['A3':'D20']   #<-- how to specify this?
spots = pd.DataFrame(sheet.range) #what should be the exact syntax for this?

print (spots)

이것을 받으면 A열에 있는 데이터를 찾아 B열에 해당하는 값을 찾을 예정입니다.

편집 1: openpyxl이 너무 오래 걸려서 로 변경했습니다.pandas.read_excel('data.xlsx','Sheet2')적어도 그 단계에서는 훨씬 더 빠릅니다.

편집 2: 당분간은 데이터를 한 장에 담았습니다.

  • 다른 모든 정보를 삭제했습니다.
  • 열 이름 추가,
  • 응용의index_col맨 왼쪽에 있는 칼럼에
  • 그 후 사용wb.loc[]

panda read_excel 문서의 다음 인수를 사용합니다.

  • skiprows : 리스트라이크
    • 시작할 때 건너뛸 행(0-색인)
  • nrows: int, 기본값 없음
    • 해석할 행의 수.
  • parse_cols : int 또는 list, 기본값 None
    • [없음(None)]의 경우 모든 열을 해석합니다.
    • int의 경우 구문 분석할 마지막 열을 나타냅니다.
    • int 목록이 구문 분석할 열 번호 목록을 나타냅니다.
    • 문자열이 열 이름과 열 범위를 쉼표로 구분한 목록("A:E" 또는 "A,C,E:F")을 나타내는 경우

전화는 다음과 같이 표시됩니다.

df = read_excel(filename, 'Sheet2', skiprows = 2, nrows=18,  parse_cols = 'A:D')

편집:

판다의 후기 버전에서parse_cols로 이름이 변경되었습니다.usecols따라서 위의 콜은 다음과 같이 고쳐야 합니다.

df = read_excel(filename, 'Sheet2', skiprows = 2, nrows=18,  usecols= 'A:D')

이를 위한 한 가지 방법은 openpyxl 모듈을 사용하는 것입니다.

다음은 예를 제시하겠습니다.

from openpyxl import load_workbook

wb = load_workbook(filename='data.xlsx', 
                   read_only=True)

ws = wb['Sheet2']

# Read the cell values into a list of lists
data_rows = []
for row in ws['A3':'D20']:
    data_cols = []
    for cell in row:
        data_cols.append(cell.value)
    data_rows.append(data_cols)

# Transform into dataframe
import pandas as pd
df = pd.DataFrame(data_rows)

팬더 O.25에 대한 나의 대답은 잘 테스트되고 잘 작동했다.

pd.read_excel('resultat-elections-2012.xls', sheet_name = 'France entière T1T2', skiprows = 2,  nrows= 5, usecols = 'A:H')
pd.read_excel('resultat-elections-2012.xls', index_col = None, skiprows= 2, nrows= 5, sheet_name='France entière T1T2', usecols=range(0,8))

그래서 : 원하는 라인(5)과 콜 A에서 H를 선택한 두 줄 뒤에 데이터가 필요합니다.
팬더의 새로운 파라미터에 따라 @shane 답변의 개선과 갱신이 필요하다.

나의 오리지널 엑셀

팬더와의 나의 과정 read_pander

언급URL : https://stackoverflow.com/questions/38560748/python-pandas-dataframe-reading-exact-specified-range-in-an-excel-sheet

반응형