개발하자

빠른 속도로 파일을 업로드하는 방법API를 Panda Dataframe으로 변환하시겠습니까?

Cuire 2022. 11. 15. 11:41
반응형

빠른 속도로 파일을 업로드하는 방법API를 Panda Dataframe으로 변환하시겠습니까?

파일을 Fast에 업로드하고 싶습니다.API 백엔드를 사용하여 Pandas DataFrame으로 변환합니다. 하지만 Fast를 사용하는 방법을 이해하지 못하는 것 같습니다.API의 개체입니다. 좀 더 구체적으로 어떤 기능을 전달하면 될까요?

내 금식이야API 끝점:

@app.post("/upload")
async def upload_file(file: UploadFile):
    df = pd.read_csv("")
    print(df)
    return {"filename": file.filename}



아래에는 업로드된 파일을 빠른 속도로 변환하는 방법에 대한 다양한 옵션이 있습니다.Panda 데이터 프레임에 대한 API입니다. DataFrame을 JSON으로 변환하여 클라이언트에게 반환하고 싶다면 을 보십시오. 대신 엔드포인트를 사용하고 싶다면 파일 내용을 읽는 방법과 사용법을 이해하시기 바랍니다. 또한 I/O 작업(아래 옵션에서 설명됨)을 블록으로 둘러싸서 가능한 모든 예외와 개체를 올바르게 포착/제시할 수 있도록 하는 것이 가장 좋습니다(및 참조).

옵션 1

는 객체를 수락할 수 있으므로 객체를 직접 전달할 수 있습니다. 속성을 사용하여 얻을 수 있는 실제 파이썬을 보여줍니다. 다음은 예를 제시하겠습니다. 참고: 따라서 엔드포인트를 사용하려는 경우 설명된 대로 방법을 사용하여 파일의 내용을 읽은 다음 아래 리메이닝 옵션 중 하나를 사용하여 내용을 전달하는 것이 좋습니다. 또는 Starlette(설명된 대로)를 사용하면 별도의 스레드에서 를 실행하여 기본 스레드가 차단되지 않도록 할 수 있습니다.

from fastapi import FastAPI, File, UploadFile
import pandas as pd

app = FastAPI()

@app.post("/upload")
def upload_file(file: UploadFile = File(...)):
    df = pd.read_csv(file.file)
    file.file.close()
    return {"filename": file.filename}

옵션 2

바이트를 문자열로 변환한 다음 메모리 내 텍스트 버퍼(예: 데이터 프레임으로 변환할 수 있음)로 로드합니다.

from fastapi import FastAPI, File, UploadFile
import pandas as pd
from io import StringIO

app = FastAPI()

@app.post("/upload")
def upload_file(file: UploadFile = File(...)):
    contents = file.file.read()
    s = str(contents,'utf-8')
    data = StringIO(s) 
    df = pd.read_csv(data)
    data.close()
    file.file.close()
    return {"filename": file.filename}

옵션 3

대신 메모리 내 바이트 버퍼를 사용하십시오(예: 옵션 2:

from fastapi import FastAPI, File, UploadFile
import pandas as pd
from io import BytesIO
import uvicorn

app = FastAPI()

@app.post("/upload")
def upload_file(file: UploadFile = File(...)):
    contents = file.file.read()
    data = BytesIO(contents)
    df = pd.read_csv(data)
    data.close()
    file.file.close()
    return {"filename": file.filename}

반응형