• Skip to main content
  • Skip to primary sidebar

学習記録

河副 太智

DashのDash Core Components一覧

2018年9月26日 by 河副 太智 Leave a Comment

Dash Core Componentsのページにあるコードをコピペするだけで
ほしいコンポーネントが簡単に設置できます。

 

ドロップダウン、スライダー、ラジオボタンの3つを設置↓

コード

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import dash
import dash_html_components as html
 
app = dash.Dash()
app.layout = html.Div([
    
            html.Label("Dropdown"),
            dcc.Dropdown(options=[
                {"label":"New York City",
                "value":"NYC"},
                 {"label":"San Francisco",
                 "value":"SF"}],
                        value="SF"),
            html.Label("Slider"),
            dcc.Slider(min=-10,max=10,step=0.5,value=0,
                      marks={i: i for i in range (-10,10)}),
            html.P(html.Label("Some Radio Items")),
            dcc.RadioItems(options=[{"label":"New York City",
                "value":"NYC"},
                 {"label":"San Francisco",
                 "value":"SF"}],
                          
                          value="SF")    
])
    
    
if __name__ == '__main__':
    app.run_server()    

 

Filed Under: Dash

DashでHTMLとCSSを追加する

2018年9月26日 by 河副 太智 Leave a Comment

dash_html_componentsを使用すると簡単にHTMLやCSSを
書くことができます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import dash
import dash_html_components as html
 
app = dash.Dash()
app.layout = html.Div(["this is the outermost div",
                      html.Div(["this is an inner di v"],
                              style={"color":"red","border":"3px red solid"}),
                      html.Div(["another inner div"],
                              style={"color":"blue","border":"3px blue solid"})],
                     style={"color":"green","border":"2px green solid"})
 
 
if __name__ == '__main__':
    app.run_server()

 

実行すると以下のように表示されます。

 

 

 

様々なDash Core Componentsはリファレンスページにあります。

Filed Under: Dash

Dashの基礎

2018年9月25日 by 河副 太智 Leave a Comment

Dashを使用してローカル環境でのwebappの構築
以下のコードを実行するとポート8050で実行される
Running on http://1xx.0.0.1:8050/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import dash
import dash_core_components as dcc
import dash_html_components as html
 
app = dash.Dash()
 
app.layout = html.Div(children=[
    html.H1(children='Hello Dash'),
    html.Div(children='Dash: A web application framework for Python.'),
 
    dcc.Graph(
        id='example-graph',
        figure={
            'data': [
                {'x': [1, 2, 3], 'y': [4, 1, 2], 'type': 'bar', 'name': 'SF'},
                {'x': [1, 2, 3], 'y': [2, 4, 5], 'type': 'bar', 'name': u'Montréal'},
            ],
            'layout': {
                'title': 'Dash Data Visualization'
            }
        }
    )
])
 
if __name__ == '__main__':
    app.run_server()

 

上記コードは値を手入力で入れているので次はplotlyを使用して
グラフを表示させます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# -*- coding: utf-8 -*-
import dash
import dash_core_components as dcc
import dash_html_components as html
import plotly.graph_objs as go
import pandas as pd
 
df = pd.read_csv("OldFaithful.csv")
 
app = dash.Dash()
 
 
app.layout = html.Div([dcc.Graph(id="old",
            figure={"data":[go.Scatter(x=df["X"],y=df["Y"],mode="markers")],
                "layout":go.Layout(title="old faithful eruptions",
                          xaxis={"title":"Duration"},
                          yaxis={"title":"Interval"})})])
 
 
if __name__ == '__main__':
    app.run_server()

 

↓ローカル上で表示されたWebapp

 

 

 

Filed Under: Dash

過去数か月分のデータをDFに追加していく

2018年9月22日 by 河副 太智 Leave a Comment

APIが混雑している際に再取得するdef fetch_url(url):を追加

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
import pandas as pd
import plotly.offline as pyo
import plotly.graph_objs as go
import urllib.request
from time import sleep
from datetime import datetime, date, timedelta
from dateutil.relativedelta import relativedelta
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
 
#パラメーターの作成
#trade data type C Commodities S Services
datatype = "type=C"
#china=156,UK=826,US=842,jp=392or all
reporting_area = "&r=842"
#Annual=A,Monthly=M
frequency = "&freq=M"
#YYYY or YYYYMM or now or recent 
time_period = "&ps=201201"
# Harmonized System (HS)
classification = "&px=H4"
#china=156,UK=826,US=842,or all
partner_area = "&p=all"
# 1 (imports) and 2 (exports),
import_or_export = "&rg=1"
#HS CODE
classification_code = "&cc=610910"
#csv or json
fmt = "&fmt=csv"
#取得する相手国の数
amount_country = 6
#取得期間(年or月)
term=72
# term = 72
#一番古いデータの年月(更新あり)
oldest = "201201"
 
url = ("https://comtrade.un.org/api/get?"+datatype + reporting_area+frequency+time_period+classification+partner_area+
      import_or_export+classification_code+fmt)
 
 
#csvをdfに入れる
 
res = urllib.request.urlopen(url)
df = pd.read_csv(res)
 
#最新年を取得
newest = (df["Period"].max())
 
 
#最新年のデータのみを取得
df_n = df[df["Period"] == newest]
 
#valueが高い順に並べ替え
df_s = df_n.sort_values('Trade Value (US$)', ascending=False)
 
#上位10件を取得してリスト化
partner = []
for var in range(1, amount_country):
    partner.append(df_s.iat[var, 12])
 
    
 
 
 
    
#ここに過去の日付のcsvを追加するコードを入れる
def get_oldtime(tdatetime):
    tdatetime = datetime.strptime(str(oldest),"%Y%m")
    tdatetime =(tdatetime + relativedelta(months=1))  
    return tdatetime.strftime('%Y%m')
 
 
 
#一か月ごとのパラメータを生成
def add_old(old):
    addurl = ("https://comtrade.un.org/api/get?"+datatype + reporting_area+frequency+old+classification+partner_area+
      import_or_export+classification_code+fmt)
    sleep(2)
    return addurl
 
 
 
 
#APIが混雑している際に再取得する
def fetch_url(url):
    max_times=10
    sleep_sec=5
    retry_count = 0
    while True:
        f = urllib.request.urlopen(url)
        
        try:
            retry_count += 1
            if f.getcode() == 200 or retry_count >= max_times:
                # 200が返ってくるか、最大試行回数に到達した場合ループを抜ける
                return f
                break
            time.sleep(sleep_sec)
        except ValueError:
            print("Oops!  That was no valid number.  Try again...")  
 
 
 
for i in range(1,term):
    oldest = get_oldtime(oldest)
    time_period = "&ps=" + str(oldest)
    added_url = add_old(time_period)
    added_res = fetch_url(added_url)
    print(added_res.getcode())
    added_df = pd.read_csv(added_res)
    df = pd.concat([df,added_df])
    print(oldest)
 
 
 
data = []
for i in partner:
    
    df2 = df[df["Partner"] == i]
    trace = go.Scatter(x=df2["Period Desc."],
                       y=df2["Trade Value (US$)"],
                       mode = 'lines',
                       name = i)
    data.append(trace)
 
    
layout = go.Layout(
    title="アメリカが輸入するTシャツ等HS6109.10該当貨物"
)
 
fig = go.Figure(data=data, layout=layout)
 
pyo.plot(fig,filename="ustshirt.html")

 

Filed Under: グラフ

Prophetの時系列分析でTwitterの株価予想

2018年9月21日 by 河副 太智 Leave a Comment

Prophetを使用するとハードルの高い時系列分析がサラッとできます。
あくまでも簡易的な分析ですので期待度は微妙ですが
ちょっとした目安にする程度であれば便利かと思います。

Twitter社の株価データはYahooFinanceから取得しています。

黒い点が実際の株価の動きを表しており、大概は水色のゾーンに包括されて
おりますが、予想外の出来事(ファンダメンタル系)が起きると水色ゾーン
から外れてしまいます。

2018年8月27日の米株式市場でのツイッター株が前日終値比21%減の急落は
facebookの株価に引っ張られた為なのか予測の範囲から外れておりますが、
今後はよほどのことがなければ上昇するだろうとの予想です。
(※利益の保証は一切致しませんのでご了承ください。あくまで目安です。)

一年後、実際のtwitter株がどれほどこのグラフと合うのか??
Prophetの能力検証が楽しみです。

 

コード

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from fbprophet import Prophet
 
data = pd.DataFrame()
data2 = pd.read_csv("twitter.csv", skiprows=2, encoding="cp932",header=None,
        names=['ds','Open','High','Low','Close','Volume','y'])
data = data.append(data2)
 
model = Prophet()
model.fit(data)
 
future_data = model.make_future_dataframe(periods=200, freq = 'd')
future_data = future_data[future_data['ds'].dt.weekday < 5]
forecast_data = model.predict(future_data)
 
fig = model.plot(forecast_data)
model.plot_components(forecast_data)
plt.show()

上記コードはカラムの名前と順番をProphetに合わせてアレンジして
いるので、YahooFinanceのcsvファイルを少し調整する必要があります

Filed Under: グラフ

Jupyternotebook初期設定

2018年9月17日 by 河副 太智 Leave a Comment

c:ドライブのユーザーフォルダー(自分の名前やメールアドレスの一部)に
新規フォルダを作る(jupyter_notebook等)

次にコマンドプロンプトから

>cd jupyter_notebook

>jupyter notebook

と入力する

Filed Under: python3 Tagged With: Jupyter, 環境, 環境構築

  • « Go to Previous Page
  • Page 1
  • Interim pages omitted …
  • Page 13
  • Page 14
  • Page 15
  • Page 16
  • Page 17
  • Interim pages omitted …
  • Page 66
  • Go to Next Page »

Primary Sidebar

カテゴリー

  • AWS
  • Bootstrap
  • Dash
  • Django
  • flask
  • GIT(sourcetree)
  • Plotly/Dash
  • VPS
  • その他tool
  • ブログ
  • プログラミング
    • Bokeh
    • css
    • HoloViews
    • Jupyter
    • Numpy
    • Pandas
    • PosgreSQL
    • Python 基本
    • python3
      • webアプリ
    • python3解説
    • scikit-learn
    • scipy
    • vps
    • Wordpress
    • グラフ
    • コマンド
    • スクレイピング
    • チートシート
    • データクレンジング
    • ブロックチェーン
    • 作成実績
    • 時系列分析
    • 機械学習
      • 分析手法
      • 教師有り
    • 異常値検知
    • 自然言語処理
  • 一太郎
  • 数学
    • sympy
      • 対数関数(log)
      • 累乗根(n乗根)
    • 暗号学

Copyright © 2025 · Genesis Sample on Genesis Framework · WordPress · Log in