Plotlyによるデータ可視化1 (インストール方法)
[CodeCommit][Windows] Gitのアカウント切り替え
CodeCommitで複数のアカウントを使う場合に、Windows上で切り替えて使用する方法。
新しいアカウントでのcloneエラー
CodeCommitを使っていて、CodeCommitの別のアカウントのリポジトリをcloneしようとしたら、以下のようなエラーがでた。
fatal: repository 'https://xxxxx' not found
リポジトリあるやん・・・と思うのだけれども、これは、元々使っていたCodeCommitの認証情報を使用してアクセスしようとしているためエラーとなっているようだ。
以下のようにgitコマンドの前に「GIT_CURL_VERBOSE=1」を付けて再度実行すると、詳細なログが確認できる。 このログの中身を追っていくと、元々使っていたCodeCommitのユーザ名を使ってアクセスしに行っていることが分かる。
GIT_CURL_VERBOSE=1 git clone 'https://xxxxx'
Windows10の場合、CodeCommitの認証情報は、「Windows 資格情報」に保存されていて、gitコマンド実行時にこの情報を使用してアクセスする。
*「Windows 資格情報」は、Windowsの検索Boxで「資格情報」と検索して表示される「資格情報マネージャー」から確認できる。
とりあえずの解消策
「資格情報マネージャー」から、以前のCodeCommitのユーザ情報を削除する。
再度、cloneコマンドを実行すると、ユーザ名とパスワード入力画面が表示されるので、新しいアカウントの情報を入力する。 (ここで入力したアカウント情報が、再度、資格情報マネージャに登録される)
これで、新しいかアカウントのリポジトリがcloneできるようになる。
複数アカウントの切り替え
ただ、異なるアカウントでcloneするたびに、毎回、上記手順を踏むのは面倒。
なので、clone時に、アカウントごとにcredential.namespaceを設定してやる。 そうすることで、「資格情報マネージャー」に複数のアカウント情報を持たせることが出来る。
git -c credential.namespace=account1 clone https://xxxxx
*account1の部分は任意
cloneしたリポジトリ内で、pushやpullの度に、credential.namespace指定をしてやるのは面倒なので、以下のコマンドでcredentialの設定を行う。(リポジトリ直下の.git/configファイルに反映される)
これを実行することで、gitコマンド時のcredential.namespace指定は不要となる。 (指定したcredential.namespaceが認証情報として自動で使われるようになる。)
git config --local credential.namespace account1
※参考 w.atwiki.jp
WSL2でPython開発環境構築
WSL2 + VSCode + Docker 開発環境
以下を参照して、WSL2、VSCodeの環境を構築する qiita.com
※インストールメモ
■ WSL2インストール
- コントロールパネルの「Windows の機能を有効化または無効化」を開く
- 「Linux 用 Windows サブシステム」と「仮想マシンプラットフォーム」にチェックを入れ、OKを押す。
- Windows再起動
- コマンドプロンプトでバージョンを2に設定
wsl --set-default-version 2
■ Ubuntuの導入
Windows StoreからUbuntuをインストールする
*Storeで検索するとバージョン番号付きのUbuntuも表示されるが、バージョン番号なしの「Ubuntu」でよいようだ。
■ VSCode設定 「Remote - WSL」エクステンションのインストール
Windows上で、VSCodeを起動して、拡張機能からwslで検索してインストール VSCodeをWSL上で走らせることが出来る。
cd xxxx code .
VSCode環境
Python Extensionのインストール
VSCodeの拡張機能から「Python」で検索して、「Python extension for Visual Studio Cod」をインストールする
pip
- VSCodeのターミナル(Ctrl + @)を開く
- pipコマンドを実行できるように以下のコマンドを実行。
$ sudo apt install python3-pip
※以下のエラーが出る場合、aptのupdateを実施してみる。
Reading package lists... Done Building dependency tree Reading state information... Done Package python3-pip is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is only available from another source E: Package 'python3-pip' has no installation candidate
aptのupdateを実施
$ sudo apt update
再度、apt installすることでpipをインストールすることが出来た。
$ sudo apt install python3-pip
ライブラリ
通常通り、pipコマンドから必要なライブラリをインストールする
pip install xxxxx
ExcelのデータをDataFrame経由でMySQLに登録する
複数個あるエクセルのデータをMySQLに登録した時のメモ
エクセルをDataFrameに読み込み、DataFrameからMySQLのテーブルにデータを登録する。
ライブラリインストール
python用のORM、sqlalchemcyをインストール。Jupyter Notebookから以下のコマンドを実行
!pip install sqlalchemy
MySQL接続設定
url中の括弧内を接続環境に合わせて変更する。
import glob import pandas as pd import sqlalchemy as sa url = 'mysql+pymysql://(user):(password)@(host):(ip)/(database_name)?charset=utf8' engine = sa.create_engine(url, echo=False)
エクセル読み込み&DB登録
- 特定のディレクトリ配下に、同じフォーマットのエクセルデータが複数存在している前提
- ファイルを一つ一つ読み込み、DBに流し込んでいく。
# 指定したディレクトリ配下のファイルをすべて読み込み files = glob.glob('/(file_path_to)/*') for i, file in enumerate(files): print(i, file) # エクセルをDataFrameに読み込み。(列名は2行目に存在している想定) df = pd.read_excel(file, header=1) # 指定したテーブルにデータを登録 df.to_sql('xxxxx_tbl', engine, index=True, if_exists='append')
DataFrameのto_sql関数の引数if_existsをappendにすることで、テーブルが存在しない場合は、テーブルを新規作成しデータ登録、存在する場合はデータの追加登録。
pandas.DataFrame.to_sql — pandas 1.2.1 documentation
登録データの件数確認
登録完了後、以下を実行することでテーブルの件数を確認
engine.execute("SELECT count(1) FROM xxxxx_tbl").fetchall()
以上
参考
matplotlibの基礎知識を再学習するために参考にしたサイト
可視化作業を捗らせるためにmatplotlibを基礎から再学習。
figやsubplotやaxesなど、イマイチわかっていなかった部分を以下の記事で勉強しなおした。非常に分かりやすかったのでオススメ。
ちなみに、本家のサイトは、チュートリアルやサンプルが充実していた。スキマ時間に勉強してみようと思う。
Matplotlib: Python plotting — Matplotlib 3.2.1 documentation
DataFrameをエクセル形式でダウンロード
やりたいこと
DataFrameを使って前処理をした後のデータをエクセルとして出力したい
環境
エクセル関係のライブラリ
エクセル出力に必要なライブラリをインストール
pip install xlrd pip install xlsxwriter
コード
バイナリI/Oにエクセルを書き出して、レスポンスとして返す。
ファイル名に日本語を使うときは、別途処理が必要。(次に記載のURL参照。)
import pandas as pd from io import BytesIO def output_excel(request): # 前処理などしたDataFrame df = execute_some_preprocessing(data) # エクセルをメモリーに保存 bio = BytesIO() writer = pd.ExcelWriter(bio, engine='xlsxwriter') df.to_excel(writer, index=False) writer.save() bio.seek(0) wb = bio.read() # MIMEタイプを指定してエクセルをレスポンスとして返す file_name = 'xxxxxxxxxxxxxxxxxxxxx.xlsx' response = HttpResponse(wb, content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') response['Content-Disposition'] = 'attachment; filename=' + file_name return response
ファイル名を日本語にしたい
参考
python - Django Pandas to http response (download file) - Stack Overflow
pandas - Create an excel file from BytesIO using python - Stack Overflow
model参照時のobjects参照エラー抑止
目的
この記事を参考に、Djangoを勉強していたところ、modelのobjects参照時にVSCodeで以下のようなエラーが発生。このエラーをどげんかしたかった。
pylintがだすメッセージのようです。
環境
参考
以下のドンピシャの記事を参考に設定しました。 https://qiita.com/RyoMa_0923/items/d0c2613f15dd98280121
ただし、設定時の画面が若干違ったので、メモを残しておくことにする。
手順
1. 左下のギアマークから「Settings」を選択
2.設定画面の検索ボックスで「python.linting.pylintArgs」と入力
3.「Add Item」をクリック
4.「-load-plugins=pylint_django」を入力して「OK」
5.エラーが出なくなりました!