トピック SQL のクエリと、Pandas のメソッドの対応表を作成する。 SQL 勉強中のため、備忘録代わりに箇条書き(殴り書き)で書いていく。 Udemy のこちらのコースで勉強していました。 DBやテーブル自体の更新・操作に関するものはこちらにまとめている。(SQL のクエリだけを書き散らかしているだけ) 順序 記述順序 select from join系(+on) where group by having order by limit 実行順序(※) from join系(+on) where group by select having order by limit (※)追記 @nora1962jp さんからご指摘をいただきましたので、コメント内容を追記します。 実行順序 from join系(+on) where SQLについてなら実行順序はonとwhereの順序はonが先
こうしたい 元のデータ c1=hogeのみのデータ c1=piyoのみのデータ c1=hugaのみのデータ c1 c2 c3 c1 c2 c3 c1 c2 c3 c1 c2 c3 0 hoge 0 1 0 hoge 0 1 2 piyo 4 5 4 huga 8 9 1 hoge 2 3 1 hoge 2 3 5 piyo 10 11 , 2 piyo 4 5 > 3 hoge 6 7 , 3 hoge 6 7 4 huga 8 9 5 piyo 10 11 http://stackoverflow.com/questions/27900733/python-pandas-separate-a-dataframe-based-on-a-column-value DataFrame.groupby('カラム名') を使う。 import pandas as pd df = pd.DataFr
Pandas DataFrame dfのカラム"col"のdtypeをfloat64からintに変換するには [cc] In [1]: df[["col"]]=df[["col"]].astype(int) [/cc] で通常うまくいくのですが,NaNが存在するとエラーとなります.intではNaNが扱えません.回避する方法の一つはNaNに適当な値を入れることです. [cc] In [2]: df[["col"]]=df[["col"]].fillna(0.0).astype(int) [/cc] この問題は公共用水域水質測定データを扱っているときに起こりました.時分カラムは通常10時30分なら1030のように読み込まれ,整数として認識され,それを処理すればよかったのですが,空白セルがあると,他がすべて整数でもカラム全体がfloat64となり,空白セルの値がNaNになりました.このとき10時
I'm trying to avoid using so many comparisons and simply use a list, but not sure how to use it with str.startswith: if link.lower().startswith("js/") or link.lower().startswith("catalog/") or link.lower().startswith("script/") or link.lower().startswith("scripts/") or link.lower().startswith("katalog/"): # then "do something" What I would like it to be is: if link.lower().startswith() in ["js","c
pandas ではデータを 列 や 表形式のデータ構造として扱うが、これらのデータから順番に値を取得 (イテレーション) して何か操作をしたい / また 何らかの関数を適用したい、ということがよくある。このエントリでは以下の 3 つについて整理したい。 イテレーション 関数適用 pipe (0.16.2 で追加) それぞれ、Series、DataFrame、GroupBy (DataFrame.groupbyしたデータ) で可能な操作が異なるため、順に記載する。 まずは必要なパッケージを import する。 import numpy as np import pandas as pd イテレーション Series Series は以下 2つのイテレーション用メソッドを持つ。各メソッドの挙動は以下のようになる。 __iter__: Series の値 ( values ) のみをイテレーシ
Pythonにおけるfor文についての詳細は以下の記事を参照。 関連記事: Pythonのfor文によるループ処理(range, enumerate, zipなど) 本記事のサンプルコードのpandasのバージョンは以下の通り。バージョンによって仕様が異なる可能性があるので注意。以下のDataFrameを例とする。 import pandas as pd print(pd.__version__) # 2.1.4 df = pd.DataFrame({'age': [24, 42], 'state': ['NY', 'CA'], 'point': [64, 92]}, index=['Alice', 'Bob']) print(df) # age state point # Alice 24 NY 64 # Bob 42 CA 92
このページでは、Pandas で作成したデータフレームを操作して、特定の行・列を取得し、目的の形へ加工する手順について紹介します。 なお、特定の行、列を除外する方法については、「Pandas のデータフレームの特定の行・列を削除する」の記事をご参照ください。 特定の列を取得する カラム名 (列名) を指定して、特定の列を抽出できます。
dicts in listからDataFrameを作成することはよくあるが、 DataFrameをdicts in listにしたい時がたまにある。 df.to_dict('records')を実行するだけで良いのだが、 このシンプルなコードを良く忘れるのに記事にした。 入出力がまったく同じdicts in listで実施。 dicts_in_list = [{'x': random.randint(0, 10), 'y': random.randint(1, 5)} for i in range(10)] for dil in dicts_in_list: print dil df = pd.DataFrame(dicts_in_list) print df dicts_in_list = df.to_dict('records') for dil in dicts_in_list: p
pandas の DataFrame で、データを削除したり並べ替えたあとにインデックスを振り直す方法です。reset_indexを使います。 reset_index の使い方 from pandas import DataFrame df=DataFrame({'X':['A', 'B', 'C', 'D', 'E'], 'Y':['AA', 'BB', 'CC', 'DD', 'EE'], 'Z':['AAA', 'BBB', 'CCC', 'DDD', 'EEE']}) print df #---------------- # X Y Z # 0 A AA AAA # 1 B BB BBB # 2 C CC CCC # 3 D DD DDD # 4 E EE EEE #---------------- df.drop([0,2], inplace=True) print df #--
特に断りがない限り、使うデータは、パラメータの効果がわかり易くなるよう、タブ区切りだったり、文字列と空白と数値が混在していたりと、以下のようなちょっと癖のあるものにしています。 filepath_or_buffer本パラメータは、読み込むファイル名を指定するときに使うパラメータです。ただし、以下①、②に示すように、引数なしで動きますので実際に使うことはないでしょう。日本語はデフォルトだとutf_8形式で保存した場合のみ文字化けなく読み込めます。それ以外の形式の場合はencodingを参照ください。 import pandas as pd #①と②のどちらの書き方でも処理は同じ。 df = pd.read_csv('test.txt') #① df = pd.read_csv(filepath_or_buffer='test.txt') #② Out[1]: D001\tD002\tD003
このページでは、インデックスや値に基づいてデータフレームをソート (並び替え) する方法について紹介します。 インデックス (行名・列名) に基づいてソートする sort_index() メソッドを利用して、インデックス(カラム名、行名)に基づいてソートを行うことができます。 ascending=False は、降順にソートすることを示します。なお、ascending=False を省略すると、昇順でのソートとなります。 axis=1 が行方向のソートを意味し、省略した場合は、行名に基づくソートとなります。
データフレームを作る(1) numpyの配列から作る。 import numpy as np import pandas as pd a = np.random.randint(1, 100, (3, 2)) frame = pd.DataFrame(a, columns=["a", "b"]) print(frame) # a b # 0 85 80 # 1 85 10 # 2 17 38 データフレームを作る(2)リストから import numpy as np import pandas as pd d =[[1, 2, 3], [50, 60, 70]] frame = pd.DataFrame(d) print(frame) # 0 1 2 # 0 1 2 3 # 1 50 60 70 print(frame.T) # 0 1 # 0 1 50 # 1 2 60 #2 3 70
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く