Flask Pandas Dataframe - 코딩 방법

23882 단어 pandaswebdevflask
안녕하세요 코더 여러분,

이 문서에서는 pandas 데이터 프레임을 데이터베이스에 로드하고 페이지에 정보를 표시하는 간단한 Flask 프로젝트를 제시합니다. Flask Pandas Dataframe은 초보자가 몇 가지 기본 Flask 개념을 이해하는 데 도움이 되는 프로젝트one-file입니다.
  • 간단한 플라스크 만들기app
  • 원격 URL에서 pandas dataframe 다운로드
  • 정보를 저장할 SQLite DB 및 테이블을 생성합니다
  • .
  • 새로운 것을 사용하여 DB에 pandas 로드custom command
  • Visualize 브라우저의 데이터



  • Thanks for reading! TL;DR;



  • Flask Pandas Dataframe - 소스 코드
  • AppSeed
  • 에서 제공하는 기타free samples



    구축 및 설정



    프로젝트를 빌드하고 몇 가지 조치를 보려면 아래 제시된 이 간단한 설정을 따르십시오. 성공적인 빌드를 위해서는 Python3이 필요합니다.

    소스 복제

    $ git clone https://github.com/app-generator/flask-pandas-dataframe.git
    $ cd flask-pandas-dataframe
    



    종속성 설치: Flask, Pandas, SqlAlchemy 및 요청.

    $ # Virtualenv modules installation (Unix based systems)
    $ virtualenv env
    $ source env/bin/activate
    $
    $ # Virtualenv modules installation (Windows based systems)
    $ # virtualenv env
    $ # .\env\Scripts\activate
    $
    $ # Install dependencies
    $ pip3 install -r requirements.txt
    



    SQLite 데이터베이스 생성

    $ # Create database via Flask CLI
    $ flask shell
    >>> from app import db  # import SqlAlchemy interface 
    >>> db.create_all()     # create SQLite database and Data table 
    >>> quit()              # leave the Flask CLI  
    


    custom command를 통해 정보를 로드합니다.

    $ # Load the data into the database
    $ flask load-data titanic-min.csv
    



    앱 시작 및 데이터 시각화

    $ # Set the FLASK_APP environment variable
    $ (Unix/Mac) export FLASK_APP=run.py
    $ (Windows) set FLASK_APP=run.py
    $ (Powershell) $env:FLASK_APP = ".\run.py"
    $
    $ # Set up the DEBUG environment
    $ # (Unix/Mac) export FLASK_ENV=development
    $ # (Windows) set FLASK_ENV=development
    $ # (Powershell) $env:FLASK_ENV = "development"
    $ 
    $ flask run 
    $ # access the app in the browser: http://localhost:5005 
    



    종속성



  • Flask - 사용된 프레임워크

  • Pandas - 놀라운 data analysis 라이브러리

  • SQLAlchemy - Python SQL 툴킷 및 ORM

  • Flask-SqlAlchemy - SQLAlchemy용 Flask 확장

  • Requests - 간단한 HTTP 라이브러리.

  • $ # Virtualenv modules installation (Unix based systems)
    $ virtualenv env
    $ source env/bin/activate
    $
    $ # Virtualenv modules installation (Windows based systems)
    $ # virtualenv env
    $ # .\env\Scripts\activate
    $
    $ # Install modules - SQLite Database
    $ pip3 install -r requirements.txt
    



    데이터 다운로드



    데이터 세트는 원격location에서 다운로드되고 titanic.csv에 저장됩니다.

    >>> import requests
    >>> 
    >>> # Define the remote CSV file
    >>> csv_file = 'https://static.appseed.us/data/titanic.txt'
    >>>
    >>> # Download the file (via request library)
    >>> r = requests.get( csv_file )
    >>> 
    >>> # Save the content to a new LOCAL file
    >>> f = open('titanic.csv', 'w')  
    >>> f.write( r.content.decode("utf-8") )
    >>> f.close   
    



    프로세스 데이터



    RAW 데이터 세트에는 ~900개의 행이 있으며 pandas 라이브러리를 사용하여 쉽게 검사할 수 있습니다.

    >>> import pandas as pd
    >>> 
    >>> df = pd.read_csv( 'titanic.csv' )
    >>> df
         PassengerId  Survived  Pclass                                               Name     Sex   Age  SibSp  Parch            Ticket     Fare Cabin Embarked
    0              1         0       3                            Braund, Mr. Owen Harris    male  22.0      1      0         A/5 21171   7.2500   NaN        S
    1              2         1       1  Cumings, Mrs. John Bradley (Florence Briggs Th...  female  38.0      1      0          PC 17599  71.2833   C85        C
    2              3         1       3                             Heikkinen, Miss. Laina  female  26.0      0      0  STON/O2. 3101282   7.9250   NaN        S
    3              4         1       1       Futrelle, Mrs. Jacques Heath (Lily May Peel)  female  35.0      1      0            113803  53.1000  C123        S
    4              5         0       3                           Allen, Mr. William Henry    male  35.0      0      0            373450   8.0500   NaN        S
    ..           ...       ...     ...                                                ...     ...   ...    ...    ...               ...      ...   ...      ...
    886          887         0       2                              Montvila, Rev. Juozas    male  27.0      0      0            211536  13.0000   NaN        S
    887          888         1       1                       Graham, Miss. Margaret Edith  female  19.0      0      0            112053  30.0000   B42        S
    888          889         0       3           Johnston, Miss. Catherine Helen "Carrie"  female   NaN      1      2        W./C. 6607  23.4500   NaN        S
    889          890         1       1                              Behr, Mr. Karl Howell    male  26.0      0      0            111369  30.0000  C148        C
    890          891         0       3                                Dooley, Mr. Patrick    male  32.0      0      0            370376   7.7500   NaN        Q
    



    DataFrame: df.dtypes 에서 열 데이터 유형을 검사해 보겠습니다. 이 정보는 정보가 로드되는 위치table를 설계하는 데 사용됩니다.

    >>> df.dtypes 
    PassengerId      int64
    Survived         int64
    Pclass           int64
    Name            object
    Sex             object
    Age            float64
    SibSp            int64
    Parch            int64
    Ticket          object
    Fare           float64
    Cabin           object
    Embarked        object
    



    SQLite 저장소 준비



    정보를 쉽게 관리하기 위해 SqlAchemy ORM이 사용됩니다. Data 테이블은 로드된 정보를 저장합니다. 정의는 다음과 같습니다.

    # Store the Titanic sad stats
    class Data(db.Model):
    
        passengerId  = db.Column(db.Integer,     primary_key=True )
        name         = db.Column(db.String(250), nullable=False   )
        survived     = db.Column(db.Integer,     nullable=False   )
        sex          = db.Column(db.String(10 ), default=None     ) 
        age          = db.Column(db.Integer,     default=-1       ) 
        fare         = db.Column(db.Float,       default=-1       )
    
        # The string representation
        def __repr__(self):
            return str(self.passengerId) + ' - ' + str(self.name) 
    


    Flask CLI를 통해 SQLite 데이터베이스와 새 테이블을 만듭니다.

    $ flask shell
    App: app [development]
    Instance: D:\work\repo-learn\python\how-to\instance
    >>> from app import db
    >>> db.create_all()
    


    이 시점에서 SQLite용 오픈 소스 및 무료 편집기인 SQLiteBrowser을 사용하여 데이터베이스를 검사할 수 있습니다(테이블이 비어 있음).


    데이터 로드



    정보는 custom command = load-data를 통해 데이터베이스에 로드됩니다. 이 명령은 file name를 입력 인수(CSV 형식)로 예상합니다.

    # New import
    import click
    ...
    # Custom command
    @app.cli.command("load-data")
    @click.argument("fname")
    def load_data(fname):
        ''' Load data from a CSV file '''
        print ('*** Load from file: ' + fname)
    
        # The functional part goes here
        ... 
    


    명령이 제대로 코딩되었는지 확인하기 위해 터미널에 flask --help를 입력할 수 있습니다.

    $ flask --help
    
    Options:
      --version  Show the flask version
      --help     Show this message and exit.
    
    Commands:
      load-data  Load data from a CSV file          <-- NEW Command
      routes     Show the routes for the app.
      run        Run a development server.
      shell      Run a shell in the app context.
    





    $ # Load the information
    $ flask load-data titanic-min.csv
    



    정보가 로드되면 앱을 시작하고 브라우저에서 결과를 확인할 수 있습니다.

    기본 경로




    데이터 경로




    Thanks for reading! For more resources, please access:





  • Flask - 사용된 프레임워크

  • Pandas - 놀라운 data analysis 라이브러리

  • AppSeed - 지원 및 추가 샘플용
  • 좋은 웹페이지 즐겨찾기