自動化無しに生活無し

WEB開発関係を中心に備忘録をまとめています

  • 【Pandas】read_sql で生のSQL(SELECT文)を実行、DBから直接DataFrameを作る

    分析するデータは常にCSVにあるわけではない。DBから取り出す必要もある。 そこで、Pandasからread_sql メソッドを使ってDBから直接DataFrameを作る。 pandasで.read_sql() を使うサンプルコード pip install pandas pip install sqlalchemy 事前にpandas とsqlalchemy をインストールしておく。 import pandas as pd from sqlalchemy import create_engine # 例: PostgreSQL に接続する場合(DB種類・ホスト・ポート・ユーザー・パスワードを変更) engine = create_engine('postgresql://username:password@localhost:5432/mydb') ...
  • 【SQL】GROUP BY, HAVING, COUNTの3つでグループ化して集計、条件で絞り込みカウントする

    GROUP BY + HAVING + COUNT よくある手法の一つに、 売上データから営業担当者ごとに売上件数を集計し、売上件数が2件以上の人だけ表示したい。 というものがある。 id salesperson region amount 1 Alice East 100 2 Bob West 200 3 Alice East 150 4 Bob West 250 5 Carol East 300 データがこの場合、SQLで表現すると、 SELECT salesperson, COUNT(*) AS num_sales FROM sales GROUP BY salesperson HAVING COUNT(*) >= 2; 結果はこうなる。 salesperson num_sales Alice 2 Bob 2 GROUP BY カラムが同じ値ごとに集計 GROUP BY はカラムを指定し、同じ値ごとに集計をすることができる。 今回は salesperson を指定することで、同じ営業 ...
  • 【SQL】Oracleデータベースのファンクション(関数)の一覧

    NVL(A,B) AがNULLならBを返す 以下は、bonus カラムの値がNULLの場合、そのまま表示させず、0を返すようにしている。 SELECT NVL(bonus, 0) AS bonus_value FROM employees; 文字列を返すこともできる。ただし元のカラムの値と同じデータ型に限る。 SELECT NVL(middle_name, '(なし)') AS middle FROM users; つまり以下はエラー(暗黙的に型変換される可能性もあるが、エラーになることがあるため、推奨されない) SELECT NVL(bonus, '賞与なし') AS bonus_value FROM employees; この場合、型変換を明示的に指定して変換をするとよいだ ...
  • 【Pythonでグラフ描画】matplotlibとseabornのAPIのまとめ

    matplotlib matplotlibは配列データを元に、グラフを描画することができる。 代表的な 棒グラフ、折れ線グラフ、散布図の3つを以下コードで描画している。 import numpy as np import matplotlib.pyplot as plt # データ準備 categories = ['A', 'B', 'C', 'D', 'E'] values = [5, 7, 3, 8, 4] # 棒グラフ用 x = np.arange(0, 10, 1) # 折れ線グラフ・散布図用 y_line = np.sin(x) # 折れ線グラフ用 y_scatter = y_line + np.random.normal(0, 0.2, size=x.shape) # 散布図用(ノイズを加える) # --- 1. 棒グラフ --- plt.figure(figsize=(6, 4)) plt.bar(categories, values, color='skyblue') plt.title("Bar Graph") plt.xlabel("Category") plt.ylabel("Value") plt.grid(axis='y') plt.tight_layout() plt.show() # --- 2. 折れ線グラフ --- plt.figure(figsize=(6, 4)) plt.plot(x, y_line, marker='o', linestyle='-', color='green') plt.title("Line Graph") plt.xlabel("X") plt.ylabel("Y") plt.grid(True) plt.tight_layout() plt.show() # ...
  • Pythonのthreading.Thread と concurrent.futures.Threadpoolexecutor の違い【マルチスレッド処理】

    Pythonのマルチスレッドには2つの方法がある。 threading.Thread と concurrent.futures.Threadpoolexecutor の2つである。 本記事ではその比較をまとめる 比較項目 threading.Thread Threadpoolexecutor スレッドの管理 自分でスレッドの実行と終了の管理が必要 自動的に管理される 戻り値の扱い 基本取得できない(共有変数などを使う) 取得できる エラーハンドリング 各スレッドでtry-exceptをしなければならない Future.exception() で取得可能 スレッドの起動 個別に起動できる タスクをプールに投げるので、個別にはスレッドの起 ...
  • Ubuntuの夜間モードが通用しない場合の対処法

    • 作成日時:
    • 最終更新日時:
    • Categories: others
    • Tags: Ubuntu tips
    GUIから夜間モードの操作をする。 gnome-control-center display これで夜間モードの設定画面が開く。 コマンドから夜間モードを有効にする。 gsettings set org.gnome.settings-daemon.plugins.color night-light-enabled true これでONになり、 gsettings set org.gnome.settings-daemon.plugins.color night-light-enabled false これでOFFになる。ショートカットキーにも割り当てておけば便利かもしれない。 どうしても夜間モードが効かない場合は? ログアウトして再度ログインする。これでデスクトップが起動し直され、夜間モードが正常に機能する。 ...
  • OracleDBのSQLまとめ

    dockerにインストールしたOracle−XEを使用している。 UbuntuのDockerでOracle DB SQL Silverの試験勉強の環境を整える HR スキーマを搭載した。 雇用日時をもとに絞り込みをする 【非推奨】文字列を与えると、暗黙的にDATE型に変換する 例えば、2015年1月1日以降に雇用した従業員を出力するには、 SELECT * FROM employees WHERE hire_date >= '2015-01-01' ; そして、新人を上に表示させるため、降順に並び替える。 SELECT * FROM employees WHERE hire_date >= '2015-01-01' ...
  • 【データベース】基本的なSQL文の一覧【SELECT, INSERT INTO, DELETE, UPDATE, UNION, JOIN】

    【導入】dockerでDatabaseを用意する。 Oracle DBを用意する UbuntuのDockerでOracle DB SQL Silverの試験勉強の環境を整える ただし、この記事ではPostgreSQLでの使用を想定しているため、SQLが若干違う点に注意。 テーブルをつくるCREATE TABLE文 CREATE TABLE テーブル名 ( カラム名1 データ型 [制約], カラム名2 データ型 [制約], ... ); この書き方に倣って、 CREATE TABLE categories ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT ...
  • duコマンドでディレクトリのサイズ・容量を調べる【ファイルサーバーのストレージディスク整理に】

    ファイルサーバーなどを運用していると、ディスク容量が足りなくなることがよくある。 df -h --total でもストレージの残量を調べることはできるが、パーティション単位であり、どのファイルがどれぐらいの容量なのかがわからない。 こういうときはduコマンドを使って調べる。 du -sh ./* これでカレントディレクトリ内のすべてのファイルの容量を調べることができる。(hオプションで見やすく、sオプションで1階層のみ調べる) ...
  • sedコマンドで指定した範囲の行だけ標準出力をする。xselと組み合わせて部分的にクリップボードにコピー

    sed -n "開始行,終了行p" ファイル名 とすることで、指定したファイルの開始行から終了行までのテキストをそのまま標準出力できる。 そのため、xselと組み合わせ、指定したファイルの指定した範囲の行を、ワンライナーでクリップボードにコピーできる。 sed -n "100,120p" ./bbs/views.py | clipcopy ...