「pandas」カテゴリーアーカイブ
ランダム文字列とリスト入れ子
JPEA申請の回し方をどうする
JPEA申請の回し方をどうする サンプル作成 No id 謄本 同意書 共同名義人 0 1 A879 31.0 32 11.0 1 2 A799 77.0 23 71.0 2 3 A741 NaN 3 6.0 3 4 A… 続きを読む »
辞書やCSV、DFなどの基本
辞書を作成 基本 応用 DataFrameを作成 0 0 1 1 2 2 3 3 4 0 1 0 1 5 1 2 6 2 3 7 3 4 8 col_A 0 1 1 2 2 3 3 4 col_A col_B 0 1 5… 続きを読む »
to_excel と ExcelWriter
to_excel 参考 基本(単一シート) シート名を指定する セルを指定する ウィンドウ枠を固定する with pd.ExcelWriter(path) as writer: 参考 基本(複数シート書き出し) 既存ファ… 続きを読む »
read_excel のオプション
オプション一覧 No オプション 使用例 説明 1 io 2 sheet_name sheet_name=0 1番目のシート1(default)sheet_name=1 2番目のシートsheet_name=’… 続きを読む »
DtypeWaring: Columns (2,12,14) have mixed types.
どんなエラー 例 対策 どう処理すればよいか?
顧客コード2行を1行に集約(groupby)
tqdmプログレスバー
プログレスバー 進捗の見える化 ポイントはループで利用 for文のin直後にtqdmを加える ループ中にprintがあると表示が大変 ctrl + C で停止 desc=で、バーのタイトルがつく(例の場合「test」) … 続きを読む »
groupbyの集約パターン
基本形 df.groupby(グループ分けカラム).agg({集約カラム: 集約関数}) グループ分けカラム データをグループに分割して、計算する単位になる 集約カラム そのカラムのデータ(値)を使って集約される 集約関… 続きを読む »
構造化されてないCSVをpandasで読み込む
各行の列数が異なるとエラー 解消方法1 解消方法2 または、skiprows や usecols で読み込む範囲を狭めて(構造化された箇所だけを)読み込むやり方でもよい 過去分・算定からNG行だけを取出し、再作成
dfの列、Seriesの列名を変更
これはなんだ?Seriesの列名を変更? dfの列名を変更
rank
https://note.nkmk.me/python-pandas-rank/
平均 mean
https://deepage.net/features/pandas-mean.html#nan値を無視しない skipna=True 欠損値を無視して、それ以外で平均値を出す skipna=False 欠損値を無視し… 続きを読む »
ダミー変数 get_dummies(途中)
https://note.nkmk.me/python-pandas-get-dummies/ カテゴリの値ごとに項目をわけて保持し、データが該当する項目に1、それ以外の項目に0を付与するなどして作成した変数を「ダミー変… 続きを読む »
csvからCounterで集計する
Series/DataFrameが空かどうか
df.empty Series/DataFrameが完全に空の場合はTrueを返す NaNが含まれていると空とはみなさない 空 → True 空でない → False https://pandas.pydata.org/… 続きを読む »
データ集計を高速化したい
https://teratail.com/questions/6awlnff8pa23e7 メイン テストデータ作成用
timeit
pythonファイルで計測 timeit.timeit()にlambda式を使う jupyterで計測する場合はコレ デフォルト値 ループ数(n)を変える 繰り返し数(r)を変える timeの方がわかりやすい?
Officeパスワード解除と設定
msoffcrypto pywin32com
YYYYMMから翌月・前月を出す
str.split(~,expand=True)[*]で置換後に取得
列「Country」の[note 9]を除外したい場合
列「郵便番号」が100以上209以下であれば1、でなければ0のフラグを付ける
<変更前df> <変更後df>
3桁区切りの数値をintに変換する(読み込み後)
3桁区切りはCSVデータ読み込み時にthousands=’,’ を使ってfloat型に変換することができるが、一部文字列が含まれたりするとうまく変換できないことがある 以下だと読み込みんだ後で、intに変換することができ… 続きを読む »
要素・行・列に関数を適用(map,applymap,apply)
参考URL https://note.nkmk.me/python-pandas-map-applymap-apply/
列Aのある値を検索、隣の列の値を取得する
列Nameが「name_A」の場合、その隣の列Valueの値を取得する(これがベストかは不明) 関数にするなら
SettingWithCopyWarning(連鎖代入)
参考HP:https://linus-mk.hatenablog.com/entry/2019/02/02/200000 SettingWithCopyWarning は警告であり、エラーではない。ただし、その処理が自分… 続きを読む »
改・結合の仕方
concatとmergeの違い 項目 pd.concat pd.merge 用途 縦横に結合したい場合※単純に縦または横に結合するだけ 共通のデータ列で結合したい場合 結合するobjs指定 [df1, df2](戻り値:… 続きを読む »
データを行・列方向にずらす
参考URL:https://note.nkmk.me/python-pandas-shift/ 時系列でない場合 shift() を利用する ずらした場合、そこにはNaNが入るため、列はfloat型に変換される ずらした… 続きを読む »
桁数、文字数指定、位置揃え、ゼロ埋め、など
USAGE 数値の出力桁数を指定する 数値に桁区切りを入れる 表示する文字数を指定する 文字のアラインメント(位置揃え) ゼロパディング 参考)zfill fromat と f文字列 での桁数表記 num = 99.12… 続きを読む »
read_csvのオプション
オプション 使用例 内容 備考 sep or delimiter sep=’\t’ 指定文字で区切って読み込む header header=Noneheader=1 ヘッダー行を指定… 続きを読む »
データの揺れ
Python実践データ分析100本ノック第2章より 商品名の揺れ 現状のユニークアイテム一覧 半角全角スペース、大文字小文字の混在を解消する 金額欠損値の補完 今回の流れ 欠損値の場所を特定 その商品名を取得(ユニークで… 続きを読む »
pandasは賢いので列に数値と文字列が混在すると、その数値もオブジェクトとして出力してしまう
dfの後方の列を先頭に移動する
条件に応じて値を代入(iloc, where, mask)
Sファイルの個人情報を削除する
クロス集計 crosstab
pd.crosstab(df[‘-‘],df[‘-‘],) カテゴリデータ(カテゴリカルデータ、質的データ)のカテゴリごとのサンプル数(出現回数・頻度)の算出などが可能。 … 続きを読む »
2つのDFの差異(pd.isin、todict、all)
参考HP pd.isin()、todict()、all()を利用すれば出力可能 df1.isin(df2)としてしまうと、同じ行列であれば突合可能(=compare) しかし、2つのDFの行数や列数(行名、列名)が違うと… 続きを読む »
from glob import glob
型混在・強制的に数値やNaNに変換 to_numeric()
型が混在するケース 混在なしの場合(列:int) 文字列(文字列の空白含む)が混在(列:int) NaNが混在する場合(列:int) NaNが混在する場合(列:str) 列を全て int に変換 pd.to_numeri… 続きを読む »
重たいCSVの先頭だけをチラ見したいとき
2つのDataFrameを比較する
2つのDFを比較するには「この」の方法がベスト ただし、2つのDFの列名はあわせておく必要あり 比較する列を切り出しておくとよい 理由:他列に余計なNaNや文字列が含まれていると比較できないため あくまで比較したい列だけ… 続きを読む »
A value is trying to be a set on a copy of a slice from a DataFrame.
スライスのコピー 参考HP:https://note.nkmk.me/python-pandas-setting-with-copy-warning/https://note.nkmk.me/python-pandas-… 続きを読む »
メモリ使用量の削減
正確なメモリ使用量を表示させる object型が含まれる場合、メモリ使用量は正確に表示されない df.info()またはdf.memory_usage()にオプションを付与すれば表示可能 df.info(memory_u… 続きを読む »
日付の加工
サンプル作成 DatetimeIndexに変換 年、月を追加 年度を追加
Styler.format
Styler.format( formatter=None, subset=None, na_rep=None, precision=None, decimal=’.’, thousands=No… 続きを読む »
pandas 条件抽出
query サンプルCSV 主な条件抽出の記法 上:Booleanインデックス法(Boolean選択法) 下:クエリー 欠損値NaNがある場合の注意点 NoneやNanがある列に対して文字列メソッドを適用して条件とすると… 続きを読む »
pandas オプション設定
参考HP:pandasのオプション設定を確認・変更する方法 Jupyter labの行列の最大値を設定する デフォルトに戻す
概要表示のため、ちょっとしたDFを作成したい
DataFrameの作り方6種(理解してないとだめ) 参考HP:https://www.self-study-blog.com/dokugaku/python-pandas-dataframe-make/ サンプルデータ… 続きを読む »
pandas 行や列の削除 – df.drop()
行を削除(行名で指定) 行を削除(行番で指定) 列を削除(列名で指定) 列を削除(列番で指定) 行と列を同時に削除
duplicated、drop_duplicates(重複)
重複行をすべて確認したい場合 duplicatedはデフォルトでは、最初の値「以外」を重複(True)として扱う 重複した行をすべてを表示させたい場合は、keep=False(カンマ不要)をセットする sort_valu… 続きを読む »
pandasの「型」
型を確認する(df.dtypes) 型を変換する 読み込み時(dtype) 一括変換 列ごとに変換 読み込み後(astype) 注意:元のDataFrameは変更されない 一括変換 列ごとに変換 インデックスの型を変換し… 続きを読む »
データ概要確認
基本 df.isnull().any() は、DF全体で欠損値があるかないか(Boolean) 型を確認 特定の型の列名を表示 各列に含まれるユニークな要素の数 ある列の要素ごとの件数
read_csv時に日付の列をdatetime型に変換
デフォルト このようなCSVをread_csvで読み込む際、datetime型で読み込みたい(デフォルトだとobject型で読み込まれる) デフォルトで読み込むとobject型となる parse_dates=[] par… 続きを読む »
サイズ大CSVを、chunkサイズで読み込む
手法1 手法2
サンプルDF作成・出力、フォルダ内のpklファイルを全結合
サンプルDFを作成後、pklで出力する フォルダ内のpklファイルを全結合(concat) 一部エリアの売上を集計
乱数発生
cumsum()を利用すると折線などのグラフデータが作成しやすい 一様乱数 乱数(標準正規分布) 乱数(整数) 一次元の複数個のndarrayは工夫が必要(?) 同じ乱数を使いたい(seed)
unique
Series.unique() Series.value_counts() pandas.Series.nunique()pandas.DataFrame.nunique() pandas.Series.nunique(… 続きを読む »
merge と join
・2つのDataFrameの連結において ・merge()とjoin()なら、汎用的なmerge()を使ったほうが良い ・merge()は、pd.merge()のほうが使いやすそう(df.merge()より) ・キーに列… 続きを読む »
JupyterでDataFrameを横並びにする
cookbook P256に記載の方法ではDF同士がふっついてしまいNG(?) 以下でよい → 参考HP
内包表記による複数ファイル読み込み
サンプルDataFrameを作成
DataFrameをつくる ここがわかりやすい:【Python】pandasのデータフレームを作成する方法6つ 関連記事:サンプルDF作成・出力、フォルダ内のpklファイルを全結合 df = pd.DataFrame(*… 続きを読む »