Pythonと!

プログラミングド素人の勉強日記です。

Python

UbuntuでSelenium(+chromedriver)を使う準備

seleniumのインストール pip install selenium chromeとchromedriverのインストール python-to.hateblo.jp 実装例 from selenium import webdriver # ブラウザの起動 options = webdriver.ChromeOptions() options.add_argument('--headless') # headlessモ…

BeautifulSoup4の基本

import requests from bs4 import BeautifulSoup # htmlの取得 res = requests.get('https://www.hoge.com/') # ローカルに保存 with open('res.html', 'w') as file: file.write(res.text) # htmlパース soup = BeautifulSoup(res.text, 'html.parser') # …

Google ColabolatoryとGoogle Driveでデータをやり取りする方法

Google ColabolatoryとGoogle Driveのデータ連携について、Pandasのread_csvとto_csvを例に書いてみます。 事前準備(Googleドライブのマウント) from google.colab import drive drive.mount('/content/drive') Google Drive上のファイルを読み込む場合 impo…

'RandomOverSampler' object has no attribute '_validate_data'

imbalanced-learnでfit_resampleしたところ、「'RandomOverSampler' object has no attribute '_validate_data'」のエラーが出てしまいました。 調べたところscikit-learnのバージョンが古いことが原因のようで、0.23.0以上に上げたところエラーが出なくなり…

PandasのデータフレームでIDを組み合わせて一意のキーを作成する。

key1_key2の形になるcombine_key列を作成する方法。 key1とkey2はint型を想定しています。 df['combine_key'] = df.apply(lambda x: '{}_{}'.format(x['key1'], x['key2']), axis=1) 参考にしたサイト [python][DataFrame]数字を結合して文字列を作る - Qiita

ifとforを混ぜたリスト内包表記の書き方

例題 columns = ['I am Sam', 'She is Erica', 'He is Eric'] list = [] for c in columns: if 'Sam' in c: list.append(c) print(list) # ['I am Sam'] これを一行で書いてみると、以下のようになる。 list = [c for c in columns if 'Sam' in c]

Google Colaboratoryの90分セッション対策

Google Colaboratoryの90分セッション対策のメモです。1. ブラウザの拡張機能で自動更新系のアドオンを入れておく2. ノートブックのメニューから、ランタイム > ランタイムのタイプ変更 > 「このノートブックを保存する際にコードセルの出力を除外する」にチ…

range関数メモ

range関数あれこれ range(3) # 0, 1, 2 list(range(3)) # リストで出力したいとき # [0, 1, 2] range(2, 5) # 第1引数 ≦ i < 第2引数に注意 # 2, 3, 4 range(0, 5, 2) # 0, 2, 4 range(10, 0, -4) # 10, 6, 2

Pandas mergeのhowのメモ(inner, left, light, outer)

Pandasのmergeで指定するhowの種類別メモ pd.merge(df1, df2, on='key', how='how') how 説明 inner デフォルト設定。両方のDFに含まれるキーだけを残して結合 left 1つ目に渡したDFのキーを全て残して結合 right 2つ目に渡したDFのキーを全て残して結合 o…

Pandasでone-hotエンコーディング

Pandasでone-hotエンコーディングを実装してみる。 import pandas as pd # 学習データ(df_1)とテストデータ(df_2)の結合 combine = pd.concat([df_1, df_2]) # カテゴリ列を抽出 cat_cols = [] for col in combine.columns: if combine[col].dtype == 'o…

Google ColaboratoryでGPU版LightGBMを使う方法

ランタイムの管理でGPUを設定してから、以下のコードを実行 !git clone --recursive https://github.com/Microsoft/LightGBM %cd /content/LightGBM/ !mkdir build !cmake -DUSE_GPU=1 #avoid .. !make -j$(nproc) !sudo apt-get -y install python-pip !sud…

Anacondaの不要ファイルを消したいとき

これでキャッシュ、使っていないパッケージ等諸々削除できる $ conda clean --all

matplotlibの文字化けを解消する方法

作業環境: Windows10, anaconda フォントのダウンロード ダウンロード(Download) | IPAexフォント/IPAフォント ipaexg.ttfを以下のフォルダにコピーする C:\Users\user_name\Anaconda3\envs\env_name\Lib\site-packages\matplotlib\mpl-data\fonts\ttf 設定…

多次元配列をpandasのDataFrameにする方法

他クラス分類の結果を提出形式にするための自分用メモ。y_pred: n行×m列のnumpy array # データフレームに変換 submission = pd.DataFrame(y_pred) # 一番左の列に列名'id'でtest_dfの'id'列を追加する。 submission.insert(0,'id' , test_df['id']) # submi…

AttributeError: module 'lightgbm' has no attribute 'Dataset'になった話

環境: Windows10, Anaconda, Jupyter python3.7.6 lightgbm 2.3.1 import lightgbm as lgb lgb_train = lgb.Dataset(X_train, y_train) lgb_eval = lgb.Dataset(X_test, y_test, reference=lgb_train) としたところ、 「AttributeError: module 'lightgbm' h…

オブジェクト型を一気にラベルエンコーディングする方法

from sklearn.preprocessing import LabelEncoder le = LabelEncoder() for col in df.columns: if df[col].dtype == 'object': df[col] = le.fit_transform(df[col])

XgboostとLightgbmのconda install(Win10前提)

Windows10のanacondaに入れる前提です。Py Xgboost :: Anaconda CloudLightgbm :: Anaconda Cloudlinux系の場合、こっちのXgboostの方がメジャーっぽい Xgboost :: Anaconda Cloud

venv環境に入ってpythonファイルを実行するシェルスクリプトを作成する

#! /bin/bash # 仮想環境フォルダまで移動 cd /hoge/fuga # venv環境のactivate . 仮想環境名/bin/activate # 実行ファイルまでのパス cd /hoge/fuga # pythonの実行 python hoge.py # 仮想環境から抜ける deactivate

【Pandas】条件に合致する行だけ右詰めしたい場合

こういう表を、 # hoge fuga piyo 1 a b NaN 2 c NaN NaN 3 NaN d NaN 4 e f g こうしたい時の話。 # hoge fuga piyo 1 NaN a b 2 NaN NaN c 3 NaN NaN d 4 e f g ・piyo列がnullの場合に右に詰める。(空行はないという前提) # piyo列のnullの合計が0にな…

pipの使い方

pip依存関係の確認 $ pip check アップデート可能なパッケージリストの表示 $ pip list -o パッケージのアップデート $ pip install -U パッケージ名 パッケージのアンインストール $ pip uninstall パッケージ名 インストール済みのパッケージ情報を出力 $ …

Jupyter Notebookの基本操作

・起動 $ conda activate 仮想環境名 $ jupyter-notebook ・セルの実行: Shift + Enter

seleniumのPythonコードをHerokuにデプロイする

chromedriverのインストール settingに以下を入れる https://github.com/heroku/heroku-buildpack-google-chrome.git https://github.com/heroku/heroku-buildpack-chromedriver.git pythonファイルへの実装 from selenium import webdriver from selenium.w…

VSCodeでのPython設定メモ

Pythonの公式エクステンションを入れる Ctrl + Shift + Xで拡張機能タブを開いて、検索バーから「Python」を探してインストールする カッコを自動補完させる Ctrl + ,でSettignsを表示する。 拡張機能 > Python Configuration > Auto Complete: Add Brackets…

Anacondaの基本コマンド(Ubuntuの場合)

anaconda navigatorを起動する $ anaconda-navigator anaconda本体のアップデート $ conda update conda パッケージ一式のアップデート $ conda update --all パッケージのアップデート $ conda update パッケージ名(例)Pythonのアップデート $ conda upda…

WindowsでOpenCVを使う

anacondaにopencvという仮想環境を作ってそこでOpenCVを使いたい場合の設定メモ①opencv-pythonをインストール $ pip install opencv-python②プログラム中で指定するカスケードファイルの場所の例 C:/Users/user/Anaconda3/envs/opencv/Lib/site-packages/cv2…

Pycharmで改行コードを変更する方法

File > Settings > Editor > Code Style Line separatorで変更

PycharmでNo module namedのエラーが出た

症状 anacondaに仮想環境を作成し、tensorflowを入れてPycharm 上でimport tensorflowしたところ、No module namedのエラーが出る。 また、Runしても、ModuleNotFoundError: No module named 'tensorflow'となって実行できない。解決策 PycharmのFile > Sett…

Pandasでread_csvしたデータフィードがラベルで抽出できなかった話

PandasでCSVを読み込みたくて次のコードを実行したところ... import pandas as pd df = pd.read_csv('bmi.csv') label = df['label'] print(label) *1以下のエラーが出ました。 Traceback (most recent call last): File "C:\Users\user\Anaconda3\lib\site-…

Pythonのスライスに出てくるカンマの使い方

import numpy a = numpy.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) print(a[:, 0]) # [1 4 7] print(a[:1, 0]) # [1] print(a[:1, 1]) # [2] print(a[:2, 1]) # [2 5] print(a[:3, 1]) # [2 5 8] :の後ろの数値で何個目のリストかを指定 ,で区切って、指定…

Pythonの仮想環境作成(Ubuntu)

・venvのインストール $ sudo apt install python3-venv・仮想環境の作成 $ python3 -m venv 仮想環境名・仮想環境に入る $ . 仮想環境名/bin/activate・仮想環境から抜ける $ deactivate