プログラマー人工知能Defcos第3期課程内容整理#18(実習:Swagger,query,merge)

14011 ワード

今日は授業の代わりに、課題を解決し、新しい技術と以前学んだことを復習します.

Swagerの使用をクリア


https://www.youtube.com/watch?v=akbdsrOpQ60を参照
サーバ開発者がAPIを開発した後,クライアント開発者にAPIの使い方を教えることを想定する.
Excelを使ってURLや必要なパラメータなどを教えたり、明細を作成する方法はいろいろあります.
しかしAPI明細の管理が困難であるため、SwaggerをAPI明細のツールとして使用する.
Swagerは、特定のプログラムに存在するAPIの機能をリストし、APIの機能をすぐにテストするのに役立つプログラムです.
Swager hubを使用してAPI詳細または
独自のサーバにSWAGモジュールをインストールし、APIを説明することができます.
モバイル開発では使用頻度が高い.
Swager hubはそれらの煩雑な仕事をそんなに面倒にしない.この過程は一蹴することができる.
設計と計画を速め、開発を速める!
Swagerは基本的にREST APIを採用している.
Open APIはRESTAPIの標準仕様です.
リクエスト、レスポンス、アクセスパスなどの全詳細パスを指定する方法.Yam、Json形式をサポートします.
Swagerを使うには2つの方法があります
特定のサーバプログラミング言語の依存使用
サーバプログラミング言語とは独立
使い方については、上のリンクを参照してください.

Query String値によるhtmlの表示


https://2dowon.netlify.app/python/flask-query-string/を参照
#/echo?string=anything(number, str)의 url값은
#request.args.get()을 사용해서 key값을 불러온다.
#value는 하나의 str이 된다.
@app.route('/echo')
def get_value():
    value = request.args.get('string')
    return jsonify({"value" : value})

Mission 1. My New Assistant


ソウル在住のホジュニは映画「ブロンズマン」を見て感動した.特に、ブロンズの男性服を装備した時に出たアシスト大守備の性能.私はこのような方法で、私たちの毎日の生活をもっと潤すことができる自分の大バックを作りたいと思っています.Hojuniを助けて韓国型ジャビス、大バックを作ります.
#coffee menu를 그대로 활용했다.
from flask import Flask, jsonify, request
app = Flask(__name__)
#자원
weapons = [
    {'id':0,'name':'missile','stock':1000}
    ]
count=1
    
# 여러분의 github id를 반환합니다.
@app.route('/whoami')
def get_id():
    return jsonify({"name" : "Ryu Jiwoo"})
    
# Key와 Value
@app.route('/echo')
def get_string():
    string_value = request.args.get('string')
    return jsonify({"value" : string_value})

# Read
@app.route('/weapon')
def get_weapon():
    return jsonify(weapons)

# Create
@app.route('/weapon', methods=['POST'])
def create_weapon():
    request_data = request.get_json()
    global count
    new_weapon = {
        'id' : count,
        'name' : request_data['name'],
        'stock' : request_data['stock']
        }
    count += 1
    weapons.append(new_weapon)
    return jsonify(new_weapon)

# Update
@app.route('/weapon/<int:id>', methods=['PUT'])
def update_weapons(id):
    request_data = request.get_json()
    update_weapon = {
        'id' : id,
        'name' : request_data['name'],
        'stock' : request_data['stock']
        }
    weapons[id] = update_weapon
    return jsonify(update_weapon)

# Delete
@app.route('/weapon/<int:id>', methods=['DELETE'])
def delete_weapon(id):
    del weapons[id]
    return {
        'delete' : 'seccess'
    }
    
if __name__ == '__main__':
    app.run()

Mission 2. My New Assistant


各キャラクターには独自の知能力があります...など、さまざまな数値が表示されます.これらの数値の和の最大の役割は誰ですか?彼らにこの過程を見せます.
良いキャラクターと悪いキャラクターの能力値の数値分布を知りたい.これを表現するために適切なグラフィックを選択し、前処理と可視化を行います.
基本的な問題は,以前に学んだデータの並べ替えと可視化方法を利用することである.


データのマージ


https://pandas.pydata.org/pandas-docs/stable/user_guide/merging.html#merging-join
リファレンス
Pandasはjoinやmergeのような演算を提供し、シリーズとDataFrameの間でデータを簡単に統合することができます.

Extra Mission


1.キャラクターごとに自分の知能、力、...など、さまざまな数値が表示されます.また、各キャラクターはDC、マーブルなど複数のグループ会社をベースにしている.どのコメディ会社のキャラクターの能力値が平均的に一番大きいですか?彼らにこの過程を見せます.
2.良い役と悪い役が衝突する.衝突が発生すれば、キャラクターたちの能力値の平均値が大きいチームが勝つという.しかし、不義に耐えられなかった中立役は、中立役がいないうちに劣勢隊に加わった.そんな中、果たしてどのキャラクター陣が勝つのか.彼らにこの過程を見せます.
追加のタスクは、2つのデータ(statsのデータとpublisherのデータのみ)を統合することです.
#on: Column or index level names to join on. 
#Must be found in both the left and right DataFrame and/or Series objects. 
#If not passed and left_index and right_index are False, 
#the intersection of the columns in the DataFrames and/or Series will be inferred to be the join keys.

newstats_df = pd.merge(stats_df, info_df, on='Name')
newstats_df