JSON과 Pandas DataFrame은 데이터 분석, 보고 및 ETL 파이프라인에서 일반적으로 사용됩니다. Pandas는 기본 구문 분석을 위해 readjson을 제공하지만 깊게 중첩된 구조, 매우 큰 파일 또는 Excel 중심의 워크플로우에서는 어려움이 있을 수 있습니다. 여기서 Aspose.Cells for Python이 도움이 됩니다. 이는 풍부한 JSON-Excel 파이프라인을 제공하며, 이를 통해 Pandas와 쉽게 통합하여 분석을 위한 깔끔한 DataFrame을 얻을 수 있습니다. 이 블로그 포스트에서는 Python에서 JSON을 Pandas DataFrame으로 변환하는 방법을 배우게 됩니다.
JSON을 판다스 데이터프레임으로 변환하는 파이썬 라이브러리
Aspose.Cells for Python via .NET은 Microsoft Excel이 필요 없는 강력한 스프레드시트 API입니다. 고전적인 Excel 자동화를 넘어, 직접 JSON 가져오기 및 내보내기를 지원하여 JSON을 Pandas DataFrame으로 변환한 후 Excel에 저장하거나 처리할 때 이상적입니다.
Aspose.Cells를 사용하면 다음과 같은 작업을 수행할 수 있습니다:
- 워크시트에 JSON을
JsonUtility를 사용하여 가져오고, 배열 및 중첩 구조를 처리하는 옵션을 제공합니다. - 워크시트 범위를 분석 및 시각화를 위한 Pandas DataFrame으로 변환합니다.
- Excel 파일 내 JSON을 생성, 로드 및 처리하여 분석 파이프라인에 적합하게 만드세요.
- 데이터프레임을 보고를 위해 Excel(XLSX, CSV, ODS, PDF)로 다시 내보내기.
간단히 말하면, 이 라이브러리는 JSON에서 Excel로 데이터를 이동하여 보고할 수 있게 해주며, Pandas를 사용하여 더 깊이 있는 분석을 수행합니다. JsonUtility는 JSON을 워크시트로 가져오고, JsonLayoutOptions는 배열과 중첩된 객체가 확장되는 방식을 제어합니다.
JSON을 DataFrame으로 변환하기
Aspose.Cells는 JSON을 워크시트에 직접 가져옵니다. 그런 다음 헤더 행과 데이터 행을 읽어 Pandas DataFrame을 만듭니다.
다음 단계를 따라 JSON을 pandas DataFrame으로 변환하세요:
- 워크북을 생성하고 첫 번째 워크시트를 가져옵니다.
JsonLayoutOptions를 구성하여 배열을 테이블로 처리하도록 설정합니다.0행,0열에서 JSON 문자열을 가져오세요.- 첫 번째 행을 열 제목으로 사용하십시오.
- 남은 행을 데이터로 추출합니다.
- Pandas DataFrame를 만드세요.
다음 코드 예제는 Python에서 JSON을 pandas DataFrame으로 변환하는 방법을 보여줍니다:
import pandas as pd
import aspose.cells as ac
# 새 워크북을 만들고 첫 번째 시트를 가져옵니다 (0 기반 인덱스).
wb = ac.Workbook()
ws = wb.worksheets.get(0)
# 워크시트에서 JSON이 어떻게 배치되어야 하는지 구성하십시오.
options = ac.utility.JsonLayoutOptions()
options.array_as_table = True # Treat a top-level JSON array as a table (rows/columns)
# 간단한 객체의 예 JSON 배열
json_data = '[{"id":1,"name":"Alice"},{"id":2,"name":"Bob"}]'
# 워크시트에 JSON을 행=0, 열=0 (셀 A1)부터 가져옵니다.
ac.utility.JsonUtility.import_data(json_data, ws.cells, 0, 0, options)
# 데이터가 포함된 첫 번째 행을 찾아주세요 (이 행이 우리의 헤더 행이 됩니다)
header_idx = ws.cells.min_data_row
# 해당 행에서 헤더 값을 추출하여 DataFrame 열 이름으로 사용하세요.
columns = [cell.value for cell in ws.cells.rows[header_idx]]
# 모든 이후 행을 데이터로 추출합니다 (헤더 행을 건너뜁니다)
data = [
[cell.value for cell in row]
for idx, row in enumerate(ws.cells.rows)
if row and idx != header_idx
]
# 수집된 헤더와 행을 사용하여 DataFrame을 작성하십시오.
df = pd.DataFrame(data, columns=columns)
# 결과를 표시하십시오.
print(df)
Output
id name
0 1.0 Alice
1 2.0 Bob
중첩된 JSON을 Pandas DataFrame으로 변환하기
당신의 JSON이 중첩된 객체를 포함하고 있다면, Aspose.Cells는 JsonUtility를 사용하여 JSON을 워크시트에 가져온 후, 이를 DataFrame으로 내보낼 수 있습니다. JsonLayoutOptions는 배열과 중첩 객체가 확장되는 방식을 제어합니다.
다음 단계에 따라 중첩 JSON을 pandas DataFrame으로 변환하십시오:
- 워크북을 생성하고 첫 번째 워크시트를 선택합니다.
JsonLayoutOptions속성을 다음과 같이 설정하세요:arrayastable=True,ignorearraytitle=True,ignoreobjecttitle=True,keptschema=True.- 중첩 JSON을 행
0, 열0에서 가져옵니다. - 사용된 범위를 감지하고 전체 범위에 걸쳐 헤더 행을 읽습니다.
- 같은 폭(고정 너비)으로 모든 후속 행을 읽습니다.
- DataFrame를 구축하십시오. 선택적으로 데이터 유형을 변환하십시오 (예:
total을 숫자로).
다음 코드 예제는 다음과 같이 파이썬에서 중첩된 JSON을 팬더 데이터프레임으로 변환하는 방법을 보여줍니다:
import pandas as pd
import aspose.cells as ac
# 워크북을 생성하고 첫 번째 워크시트를 가져오세요.
wb = ac.Workbook()
ws = wb.worksheets.get(0)
# 중첩된 JSON에 대한 레이아웃 옵션
opt = ac.utility.JsonLayoutOptions()
opt.array_as_table = True # Treat 'orders' array as a table (rows)
opt.ignore_array_title = True # Do not place a title row for the 'orders' array
opt.ignore_object_title = True # Do not place extra title rows for nested objects (e.g., 'buyer')
opt.kept_schema = True # Keep a stable set of columns even if some records miss fields
# 3단계: 중첩된 JSON
nested = '''
{
"batch": "A1",
"orders": [
{"orderId": "1001", "total": "49.90", "buyer": {"city": "NYC", "zip": "10001"}},
{"orderId": "1002", "total": "79.00", "buyer": {"city": "Boston", "zip": "02108"}}
]
}
'''
# A1에서 위의 옵션을 사용하여 가져오기 (행=0, 열=0)
ac.utility.JsonUtility.import_data(nested, ws.cells, 0, 0, opt)
# 사용된 범위 감지
first_row = ws.cells.min_data_row
first_col = ws.cells.min_data_column
last_row = ws.cells.max_data_row
last_col = ws.cells.max_data_column
# 전체 사용된 열 범위에 걸쳐 헤더 행을 읽습니다(고정 너비).
raw_columns = [ws.cells.get(first_row, c).value for c in range(first_col, last_col + 1)]
# 헤더를 안전하게 만들기: None/공백을 \"Column{n}\"으로 교체하고 str로 변환합니다.
columns = [
(str(v) if v is not None and str(v).strip() != "" else f"Column{idx + 1}")
for idx, v in enumerate(raw_columns)
]
# 데이터 행을 동일한 범위(고정 너비가 정렬 보장)에서 읽습니다.
data = []
for r in range(first_row + 1, last_row + 1):
row_vals = [ws.cells.get(r, c).value for c in range(first_col, last_col + 1)]
data.append(row_vals)
# DataFrame 빌드
df = pd.DataFrame(data, columns=columns)
# 선택 사항: 열 이름 정리 (예: 공백을 대체)
df.columns = [str(c).strip() for c in df.columns]
# 선택적 입력:
# - ZIP 코드를 문자열로 유지하십시오 (앞의 0이 중요합니다)
# - 총계를 숫자로 변환 (숫자가 아닌 것은 NaN으로 변환)
for col in list(df.columns):
if col.lower().endswith("total"):
df[col] = pd.to_numeric(df[col], errors="coerce")
# Print
print(df)
Output
A1 1001 49.90 NYC 10001
0 None 1002 79.00 Boston 02108
주의:
convertnumericordate=True를 활성화하면 숫자처럼 보이는 문자열(예: 총계)이 숫자로 변환될 수 있지만,\"02108\"과 같은 ZIP 코드는 앞 자리가 사라질 수 있습니다. ZIP 코드를 문자열로 유지하려면False로 설정하세요.
Excel을 JSON을 통해 Pandas DataFrame으로 변환하기
Excel 범위를 Aspose.Cells를 사용하여 JSON으로 내보낸 다음, 해당 JSON을 Pandas에 DataFrame으로 로드합니다. 이는 서비스나 파이프라인을 위한 구조화된 JSON 전달이 필요할 때 유용합니다.
아래 단계를 따라 Excel을 JSON을 통해 pandas DataFrame으로 변환하세요:
- 새 워크북을 만들고, 첫 번째 워크시트를 가져와서 샘플 값을 추가하세요.
JsonSaveOptions의 기본값으로 생성하십시오.- 사용된 범위를
exportrangetojson()메서드로 JSON 문자열로 내보내십시오. - JSON 문자열을 DataFrame으로 읽으려면
pd.read_json(io.StringIO(jsontext))메서드를 사용하세요. - 데이터프레임을 필요에 따라 검사하거나 처리하십시오.
다음 코드 예제는 Excel을 JSON을 통해 pandas DataFrame으로 변환하는 방법을 보여줍니다:
import io
import pandas as pd
from aspose.cells.utility import JsonUtility # JSON export utility
from aspose.cells import Workbook, JsonSaveOptions, License
# 새 워크북을 만들고 첫 번째 워크시트에 액세스합니다.
workbook = Workbook()
worksheet = workbook.worksheets.get(0)
# 워크시트의 셀을 가져옵니다.
cells = worksheet.cells
# 작은 표를 채우세요 (헤더 + 행)
cells.get("A1").value = "Name"
cells.get("B1").value = "Age"
cells.get("C1").value = "City"
cells.get("A2").value = "Alice"
cells.get("B2").value = 25
cells.get("C2").value = "New York"
cells.get("A3").value = "Bob"
cells.get("B3").value = 30
cells.get("C3").value = "San Francisco"
cells.get("A4").value = "Charlie"
cells.get("B4").value = 35
cells.get("C4").value = "Los Angeles"
# JSON 저장 옵션 설정 (간단한 테이블의 경우 기본값이면 괜찮습니다)
json_save_options = JsonSaveOptions()
# 사용된 범위를 JSON 문자열로 내보내기
# maxdisplayrange는 데이터를 포함하는 전체 직사각형 영역을 가져옵니다.
json_text = JsonUtility.export_range_to_json(cells.max_display_range, json_save_options)
# JSON 문자열을 Pandas DataFrame으로 읽어옵니다.
# 판다스는 JSON 문자열을 직접 파싱할 수 있습니다.
df = pd.read_json(io.StringIO(json_text))
# 데이터프레임을 사용하십시오.
print(df)
Output
Name Age City
0 Alice 25 New York
1 Bob 30 San Francisco
2 Charlie 35 Los Angeles
무료 라이센스 받기
Aspose.Cells for Python via .NET의 기능 제한 없이 무료 임시 라이센스를 적용하여 평가하십시오. 임시 라이센스 페이지를 방문하여 JSON 가져오기(JsonUtility), 레이아웃 제어(JsonLayoutOptions), 스키마 보존 및 숫자/날짜 변환을 포함한 전체 기능을 잠금 해제하십시오.
추가 무료 리소스
아래의 리소스를 사용하여 JSON 가져오기, 레이아웃 옵션 및 Aspose.Cells for Python을 사용한 기타 Excel 조작에 대해 더 깊이 들어갈 수 있습니다.
결론
JSON을 Pandas DataFrame으로 변환하는 것은 Aspose.Cells for Python을 사용하면 간단해집니다. 중첩 구조에 대한 신뢰할 수 있는 처리를 제공하며, 스키마 안정성에 대한 옵션과 필요할 때 Excel 내보내기를 위한 쉬운 경로를 제공합니다. Pandas의 유연성을 Aspose.Cells의 JSON/Excel 파이프라인과 결합하여 데이터 처리를 단순화하고 Python에서 강력한 분석을 가능하게 합니다.
질문이 있으시면 저희의 free support forum을 방문하세요. 도와드리게 되어 기쁩니다.
