Python関連のことを調べてみた

Python関連のことを調べてみた
目次

Pandas DataFrameのよく使う操作

# 目次

* [行・列の結合](#行・列の結合)
* [空の行・列の追加](#空の行・列の追加)
* [欠損値の操作](#欠損値の操作)

# 行・列の結合

`pandas.concat`を使う方法。
“`python
df = pd.concat([df1, df2], axis=0)#縦方向に結合
df = pd.concat([df1, df2], axis=1)#横方向に結合
“`

# 空の行・列の追加

“`python
df.loc[‘空の行’]=” # pd.Series() や np.nan でも同様
df.loc[:, ‘空の列’]=”
“`
これだと警告が出る場合があるので、回避するためには以下も使える。
“`python
df = df.assign(words=np.nan)
df = pd.concat([df, pd.DataFrame(columns=[‘words’])],axis=1)
df = pd.concat([df, pd.DataFrame(index=[‘words’])],axis=0)
“`

# 欠損値の操

元記事を表示

機械学習で株価分析 10.説明変数の作成

# はじめに
本記事では、**取得した情報から説明変数を作成する方法**を紹介します。紹介内容はあくまで一例で、本気で株価予測を行う際は自身で様々な設計変数を試行錯誤する必要があります。なお、本記事は過去の記事 [09.取得したデータの統合](https://qiita.com/ryo2_9393/items/110ce721cb283ed59fd1) の続きですので、未読の方はまずこちらをご参照ください。

# 手順
株価データ・経済指標データを取得し、以下のプログラムを実行することで新たな説明変数を作成できます。各変数の詳細な説明は省きますが、それぞれメジャーな指標ですので内容が気になる方は自身で検索してみてください。(名称や算出方法に誤りあればご指摘願います。)

データの列数が多いので、最後に列名のインデックスのみを表示するようにしています。

“`python
# 説明変数に株価に関する情報を追加
df_merge[‘Body’] = df_merge[‘Open’] – df_merge[‘Close’]
df_merge[‘Body Ratio’]

元記事を表示

はりの応力とSFD,BMD 発展例題4.24 p102「材料力学演習(20221021)」をsympyでやってみたい。

・??? 何かいい方法がありませんか。変な質問で申し訳ありません。
# オリジナル
[発展例題4.24 p102](http://zairikiweb.starfree.jp/zai_enshuh/zai_enshuh_ver.3.3.pdf#page=107)[<「材料力学演習(20221021)一括(ver.3.3)」を勉強したい。](https://qiita.com/mrrclb48z/items/c3274daf5f7a99cfe027#%E4%BD%9C%E6%A5%AD%E4%B8%AD%E7%A7%81%E3%81%AE%E8%A7%A3%E7%AD%94sympy)
          ???タブレット等で、pdfを開く事ができないかも。??? 

# sympyで
“`python
from sympy import *

var(‘l,q,a’ ,real=True)
var(‘MAC,RA,x’,real=True)
var(‘MCB’ ,real=True)
var(‘FAC,FCB’ ,real=True)
var(‘RB’ ,re

元記事を表示

機械学習で株価分析 09.取得したデータの統合

# はじめに
本記事では、**取得した株価情報と経済指標情報をひとつのデータフレームに統合する方法**を紹介します。併せて、データのブランクを埋める方法もご紹介します。なお、本記事は過去の記事 [06.個別の株価データの取得](https://qiita.com/ryo2_9393/items/0f2ffc0fb00aedcac251) と [08.経済指標データの取得](https://qiita.com/ryo2_9393/items/dfe6fae255dc3ffdc05e) の続きですので、未読の方はまずこちらをご参照ください。

# 手順
株価データ・経済指標データを取得し、以下のプログラムを実行することでデータを結合できます。後半で、データに`nan`が含まれないよう編集しています。まず、`ffill`を用いて`nan`に過去の値を代入し、過去の値がない部分は`0`を代入するメソッドです。

“`python
# 株価データに経済指標データを統合
df_merge = pd.concat([df_stock, df_fred], axis=1)

# データのブランクを

元記事を表示

機械学習で株価分析 08.経済指標データの取得

# はじめに
本記事では、**PythonでYahooFinanceのデータベースから経済指標情報を取得する方法**を紹介します。取得できるデータは、指定した経済指標の始値・高値・安値・終値・調整後終値・出来高です。

# 手順
### 1. yfinanceをインストール
以下のコードを実行してyfinanceをインストールします。実行環境はGoogle Colabを想定しています。
“`python
!pip install yfinance
“`

### 2. 必要なライブラリをインポート
以下のコードを実行して、必要なライブラリをインポートします。
“`python
import yfinance as yf
yf.pdr_override()

import numpy as np
import pandas as pd
from pandas_datareader import data
import datetime
from IPython.display import display
“`

### 3. データを取得する期間の指定
以下のコー

元記事を表示

【python】小規模GUIアプリをHTML/CSS/JSで作成できるEelはいかがですか?

# はじめに
pythonでGUIアプリを作成したい際に選ばれるのはこれらでしょうか。
– **Tkinter**
– 触った経験なし。よく記事で目にする。
– **PySimpleGUI**
– 簡単に作成できる。UIが古いイメージ。
– **Flet**
– 簡単に作成でき、UIもモダンなイメージ。

`Tkinter`は触ったことがないので分かりませんが、`Flet`はコントロールと呼ばれる部品を配置しながらGUIアプリを構築していきます。(PySimpleGUIも同じイメージです)
簡単に作成できる反面、デザインの融通に限界があります。

反面、今回ご紹介する**Eel**は、フロント部分を HTML/CSS/JS を使用して作成できるため、デザインの幅がぐっと広がります。

# 本記事の方向性
`Eel`でできることを網羅的に知りたい、という方には向いていません。
詳細なメソッドや構成に関しては[公式ドキュメント](https://github.com/python-eel/Eel)や[こちらの記事](https://qiita.com/inoory/

元記事を表示

LINE WORKS の Contact API で連絡先データを取得する Python コード サンプル

LINE WORKS は一般の LINE ユーザーや LINE WORKS の他テナントのユーザーともやり取りできます。

それらの外部ユーザーの情報は連絡先データに格納されています。

ここでは LINE WORKS の Contact API で連絡先データを取得する Python コードのサンプルを紹介します。

以下の API を利用します。
TITLE: 連絡先リストの取得
URL: https://developers.worksmobile.com/jp/docs/contact-list?lang=ja

このスクリプトでは、各連絡先の「姓」、「名」、「外部ユーザーID」、「外部ユーザータイプ」を抽出し、カンマ区切りの形式で 1 行ずつ出力します。

用途に応じて、必要な情報を適宜に出力してください。

実際のアクセストークンをコードに設定し、ローカル環境やクラウドベースのPython環境でスクリプトを実行します。
“`
import requests

# アクセストークンとその他の初期設定
access_token = ‘YOUR_ACCESS_TOKEN’ #

元記事を表示

大学の課題を自動通知して欲しかった

# はじめに

これは、Lumos Advent CalendarのDay19の記事です。

# 内容

プログラミングを知ってから一年経っていない者が大学の課題通知BOTサービスを作ろうとして諦めるまでの流れをまとめました。

# 手法

方法としては、
– 大学のLMSという教材提供サイトにアクセスし、
– 課題とその期限が載っている文字列を取得し、
– discordで通知する
という方法を使いました。

プログラムはPythonで書き、SeleniumというWebスクレイピングのライブラリを使いました。

※Webスクレイピングとは、Webサイトのhtmlテキストから、指定した部分の文字列を取得したりする方法のこと。

# 改良

上記の手法は上手くいったので、サービス化に向けて以下の問題点を改良します。

– discordは普通の人にはハードルが高いので、LINEでの通知に変更する
– パスワードの扱いが`os.getenv`で環境変数から取得していたので、データベースを用いる
– パスワードのハッシュ化など安全に配慮する

# パスワードハッシュ化の問題点

最初作

元記事を表示

機械学習で株価分析 07.個別の株式情報データの取得

# はじめに
本記事では、**PythonでYahooFinanceのデータベースから個別銘柄の財務情報を取得する方法**を紹介します。取得できるデータは多岐にわたるので、内容はデータのインデックスを自身でご確認ください。

# 手順
### 1. yfinanceをインストール
以下のコードを実行してyfinanceをインストールします。実行環境はGoogle Colabを想定しています。
“`python
!pip install yfinance
“`

### 2. 必要なライブラリをインポート
以下のコードを実行して、必要なライブラリをインポートします。
“`python
import yfinance as yf
yf.pdr_override()

import numpy as np
import pandas as pd
from pandas_datareader import data
import datetime
from IPython.display import display
“`

### 3. データを取得する期間の指定
以下

元記事を表示

機械学習で株価分析 06.個別の株価データの取得

# はじめに
本記事では、**PythonでYahooFinanceのデータベースから個別銘柄の株価情報を取得する方法**を紹介します。取得できるデータは、銘柄ごとの始値・高値・安値・終値・調整後終値・出来高です。

# 手順
### 1. yfinanceをインストール
以下のコードを実行してyfinanceをインストールします。実行環境はGoogle Colabを想定しています。
“`python
!pip install yfinance
“`

### 2. 必要なライブラリをインポート
以下のコードを実行して、必要なライブラリをインポートします。
“`python
import yfinance as yf
yf.pdr_override()

import numpy as np
import pandas as pd
from pandas_datareader import data
import datetime
from IPython.display import display
“`

### 3. データを取得する期間の指定
以下のコード

元記事を表示

焼ばめ 第10章 薄肉圧力容器 基本例題10.09 p338「材料力学演習(20221021)」をsympyでやってみたい。(英:thin wall structure)

**パイソニスタの方へ**
・整数の丸めを教えて下さい。
-222.0 → -222
278.0 → 278
# オリジナル
[基本例題10.09 p338](http://zairikiweb.starfree.jp/zai_enshuh/zai_enshuh_ver.3.3.pdf#page=343)<[「材料力学演習(20221021)一括(ver.3.3)」を勉強したい。#sympy](https://qiita.com/mrrclb48z/items/c3274daf5f7a99cfe027#%E4%BD%9C%E6%A5%AD%E4%B8%AD%E7%A7%81%E3%81%AE%E8%A7%A3%E7%AD%94sympy)
          ???タブレット等で、pdfを開く事ができないかも。??? 

# sympyで
“`python
from sympy import *
from decimal import Decimal, ROUND_HALF_UP

var(‘α2,ΔT,D,ΔD’,real=True)
var(‘σt1,E1,t1’ ,real=T

元記事を表示

焼ばめ 第10章 薄肉圧力容器 基本例題10.08 p338「材料力学演習(20221021)」をsympyでやってみたい。(英:thin wall structure)

# オリジナル
[基本例題10.08 p338](http://zairikiweb.starfree.jp/zai_enshuh/zai_enshuh_ver.3.3.pdf#page=343)<[「材料力学演習(20221021)一括(ver.3.3)」を勉強したい。#sympy](https://qiita.com/mrrclb48z/items/c3274daf5f7a99cfe027#%E4%BD%9C%E6%A5%AD%E4%B8%AD%E7%A7%81%E3%81%AE%E8%A7%A3%E7%AD%94sympy)
          ???タブレット等で、pdfを開く事ができないかも。??? 

# sympyで
“`python
from sympy import *

var(‘α2,ΔT,D,ΔD’,real=True)
eq=Eq(α2*ΔT*D,ΔD)
print(“#”,solve(eq,ΔT)[0])
# ΔD/(D*α2)
“`
# いつもの? sympyの実行環境と 参考のおすすめです。
(テンプレート)

https://qiita.com/m

元記事を表示

中学数学の交差する図形のアニメーション

# はじめに
中学数学でよく見る、図形が交差するときの重なった部分の面積を manim で書いてみました。面積や長さなどは書いていないのであくまでイメージを補完するためのものです。

# gif
大半の人はコードに興味ないと思うので結果から。

![RightAngleExample_ManimCE_v0.18.0.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3525137/a5cd3d05-7c12-a413-372b-fff9696e4894.gif)

# ソースコード
自分の環境(jupyter lab or jupyter notebook)がある人は最初のセルに下のコードを実行してから
“`python
from manim import *
import numpy as np
“`
これ↓をコピペ実行すればできます。
(コメントは見ないで……)
“`python
%%manim -qm RightAngleExample
class RightAngleExample(S

元記事を表示

機械学習で株価分析 04.機械学習の基礎

# はじめに
本記事では、**株価予測に機械学習手法を利用する上での基礎知識**を紹介します。ただし、初学者を対象にあくまで利用するためだけの基礎中の基礎の説明にとどめます。機械学習を株価予測に利用するにあたっての、勘所の把握の一助となることを目的としています。そのため、不正確・大雑把な表現が多分に含まれますがご容赦ください。誤り等についてのご指摘はコメントいただければ幸いです。

# 機械学習について
機械学習の特徴のひとつに、人間にはルールを見つけることが難しい複雑な条件設定から、ルールを導き出し結果を算出する、という点があります。株価予測に機械学習を用いる理由もそこにあります。様々な経済指標・株価等の膨大なデータから、株価等の予測したい結果を導くことが可能となります。

では、機械学習の正体は何なのでしょうか。答えは、言ってしまえば単に最適化問題を解いているだけです。より単純に言えば、$y = f(x)$ の関数$f$に当たる部分を自動的に設定するのが機械学習です。ここでは、アウトプットの$y$が予測したい株価等の情報、インプットの$x$が経済指標・株価等のデータに当たります。

元記事を表示

nlplotで自然言語の可視化

ライブラリ作成者の方のブログを参照しました。


インストール
“`python
pip install nlplot
“`

ライブラリのインポート
“`python
import nlplot
import pandas as pd
import plotly
from plotly.subplots import make_subplots
from plotly.offline import iplot
import matplotlib.pyplot as plt
“`

“`python
npt = nlplot.NLPlot(df_split, target_col=’words’)

stopwords = npt.get_stopword(top_n=0, min_freq=0)

npt.bar_ngram(
title=’uni-gram’,
xaxis_label=’word_count’,
yaxis_label=’word’

元記事を表示

Pythonコードベースの作図ツールBLOCCONI(ブロッコニ)を使ってみた

## BLOCCONI(ブロッコニ)とは
**BLOC**k and **CON**nect **I**llustrator、つまりブロックやコネクタを使ったお絵描きがコーディングベースで簡単にできるツールらしい。

## インストール方法
“`
pip install blocconi
“`
(当記事執筆時点の最新バージョンは0.1.4)

## 使用方法

– 描画に使用する関数は基本的に以下の4つ
– blocconi.make_canvas() ・・・新規キャンバスを作成する
– blocconi.add_block() ・・・既存キャンバスに新規ブロックを追加する
– blocconi.add_canvas() ・・・既存キャンバスに既存キャンバスを追加する
– blocconi.add_connector() ・・・2個の既存ブロック(orキャンバス)同士をコネクタで結ぶ

– PDFファイルへの出力は以下の関数を使う
– blocconi.save_pdf(pdf, mychip)

## 使用例
以下の test.py を例に説明する。
“`p

元記事を表示

バーコード生成プログラム

## バーコード生成プログラム
* 使用パッケージ:[barcode](https://python-barcode.readthedocs.io/en/stable/)

まだ詳しい事はわかっておりませんが、ひとまずバーコードを生成するところまで感覚でやってみました。

“`zsh
pip3 install python-barcode
“`

“`zsh
pip3 install “python-barcode[images]”
“`

“`python
from io import BytesIO
from barcode import Code128
from barcode.writer import ImageWriter

# Write to a file-like object:
rv = BytesIO()
Code128(str(100000902922), writer=ImageWriter()).write(rv)

data = “AbCd-123456”
fileName = data + “.jpeg”

# Or to an actual

元記事を表示

Sphinxの拡張時に、自分用のイベントを追加する

## Sphinxのコアイベントとイベントハンドラー

Sphinxでのドキュメント作成時に、「特定のタイミングであることをやりたい」というケースがたまに存在します。

例:

– SASS/SCSSファイルを事前にコンパイルしたい
– HTML生成時に出力データの調整をしたい
– 一通りHTMLファイルを生成したあとに、そこからスクリーンショットを生成したい

こういったタイミングで処理を差し込めるように、SphinxにはEvent APIが存在します。

試しに、自身のSphinxドキュメントの`conf.py`を編集して以下のようなコードを追加してみましょう。 [^1]

[^1]: すでに、`setup()`を定義している場合は、`_cowsay`を定義したうえで、`setup()`内の適当な場所に`app.connect(~` を差し込んでください。
“`python:conf.py
def _cowsay(app, err):
print(r”””
_________________________________
/ Cong

元記事を表示

在庫データを簡単に入力できるシステムの開発(編集中)

## 在庫管理システム
### メリット
* 在庫管理を徹底することにより無駄な注文を省く
* エクセルデータ入力により発生してしまう入力ミスを避ける

### デメリット
* 既製サービスの導入費用がかかる

### 手法
プロトタイプとして、品番ごとにバーコードを作成し、スマホなどのリーダーで品番情報を収集、その品番の残数をスマホで入力したデータを社内ネットワークを通じてエクセルデータに追加する。

## システム開発の手順
1. バーコード生成
1. 品番にユニークなバーコードを作成する
1. 作成させるためにPythonを使う
1. Pythonの[barcode](https://github.com/WhyNotHugo/python-barcode)パッケージの理解
1. [barcodeパッケージのバーコード画像作成プログラム](https://qiita.com/K4715959155160/items/f3d0728f21c48402f9df)を開発する
1. エクセルによる生成も可能(むしろ今回ならこっちの方が楽)
1. バ

元記事を表示

【Python】巡回セールスマンライブラリ

競技用にチューンした巡回セールスマン問題解法です。

# コード
“`py
def TSPdp(n, d, inf):
ln = 1 << n dp = [inf] * (ln * n) for k in range(n): dp[ln * k + (1 << k)] = 0 for i in range(1, 1 << n): for x in range(n): t = i + x * ln j = 1 for y in range(n): if i & j: j <<= 1 continue tt = (i | j) + y * ln if dp[tt] > dp[t] + d[x * n + y]: dp[tt] = dp[t] + d[x * n + y]
j <<= 1 return dp ``` $n$ を頂点数、$d$ を距離行列、たどり着けない場所の値 (無限) を $inf$ とします。 $\m

元記事を表示

OTHERカテゴリの最新記事