今までまとめたPythonのコード【PANDS】

空のテーブルを作成する
financial_data200 =  pd.DataFrame(index= [], columns=[])

空のテーブルを作成する
Increase_Mater_Table01=pd.DataFrame()

数自分のセルの空テーブルを作成する
H=2
W=2
C=H*W

financial_data200 =  pd.DataFrame(np.arange(C).reshape(H, W))

nan
nan

追加カラム
Bug_data10[""] =  Bug_data01[""]

別テーブルのカラムを追加する
financial_data02['平均出来高'] =financial_data02['Volume']

特定の列を削除
financial_data10  = financial_data10.drop(['日付差','中期MACD','長期MACD'], axis=1)


特定の行を削除
nan

範囲で行を削除
transcript_table01 = transcript_table01.drop(transcript_table01.index[0:10])

範囲で列を削除
transcript_table01 = transcript_table01.drop(transcript_table01.colmus[0:10])

nan
nan

最後の行を削除
Base_Table02=Base_Table02[:-1]

nan
nan

行と列をリネーム
df_new = df.rename(columns={'A': 'Col_1'}, index={'ONE': 'Row_1'})

特定の行をカラムに変更
JOB_data01_column_list=JOB_data01.iloc[3].to_list()
df_new = df.rename(columns={'A': 'Col_1'}, index={'ONE': 'Row_1'})

nan
nan

カラムをリスト化
TestCaseID_list = Bug_data100["Test Case_ID"].tolist()

nan
nan

nan
nan

条件抽出
financial_data03  = financial_data03[(financial_data03["出来高倍率"]>10)]

条件抽出(AND)
skill_data4= skill_data4[(skill_data4["すきる1"]==skill_search) & (skill_data4["すきる2"]==skill_search)]

条件抽出(OR)
skill_data4= skill_data4[(skill_data4["すきる1"]==skill_search) | (skill_data4["すきる2"]==skill_search)]

条件抽出(Not)
nan

nan
nan

nan
.dtype

カラムのタイプ確認
nan

nan
print(financial_data["コード"].dtype)

カラムのタイプを変更
financial_data['買いの利益'].astype(np.int64)

nan
financial_data200["URL"]=financial_data200["URL"].astype(np.str)

nan
nan

インデックスをリセット
financial_data10 =  financial_data10.reset_index()

nan
nan

strを日付に変更
    startday="2020-"+str(i)+"-01"
    startday= str(startday)
    startday= datetime.datetime.strptime(startday,'%Y-%m-%d')    

日付加算
# 1日後
dt2 = dt1 + datetime.timedelta(days=1)

日付間で計算する際の式
financial_data03["日付差"]  = (financial_data03["日付"]-financial_data03["日付"].shift(-1)).dt.days

nan
nan

並び替えをする
financial_data.sort_values('Date', ascending=True)

nan
nan

nan
nan

nan
nan

nan
nan

nan
nan

欠損値削除
.dropna(how='all')

nan
.dropna(how='any')

nan
.dropna(how='all').dropna(how='all', axis=1)

特定のカラムに欠損地があればそれを除外
df.dropna(subset=['性別'])

nan
nan

欠損値を0に
financial_data05.fillna(0)

欠損値を空白に
nan

nan
Base_Table01 = pd.read_html(browser.page_source)[0]
Base_Table01_list = Base_Table01.iloc[18].to_list()
Base_Table01 = Base_Table01.drop(Base_Table01.index[0:19])
Base_Table01.columns = Base_Table01_list
Base_Table01

特定の行を対象に欠損地を削除
Bace_data02=Bace_data02.dropna(subset=[name01+".入力値","No."])

nan
nan

欠損地を上の物に書き換える
Newfiles_data01["TestCaseId"] = Newfiles_data01["TestCaseId"] .interpolate('ffill')

欠損地を下の物に書き換える
Newfiles_data01["TestCaseId"] = Newfiles_data01["TestCaseId"] .interpolate('backfill')

nan
nan

書き換え(文章の条件が一部が一致していたら
matome_data10["Sprint"] =  matome_data10["Sprint"].str.replace('~~~', '')

nan
nan

特定の条件の時、カラムを全て任意の物に書き換える
 financial_data02.loc[financial_data02['30営業日の最安値']  <financial_data02['損切ライン'] ,  '30営業日の利益'] = loscut01*-1

nan
nan

timedelta64で条件式で遣る方法
.map(lambda x: x.total_seconds()/86400)

下のセルをとる
.shift(1)

nan
nan

切り上げ
.round(2)

nan
nan

行と列の表示を増やす
pd.set_option('display.max_columns', 10) # 最大表示列数
pd.set_option('display.max_rows', 10) # 最大表示行数

デーブルの情報を取得
transactions_data_pivot01.info()

統計量を取得する
items_data.describe()

グループごとに集計をする
df_population_data.groupby(by='都道府県名').mean()[['人口(総数)', '人口(男)', '人口(女)']].round(0)

nan
nan

表示する列数・行数を変更する
pd.set_option('display.max_columns', 10) # 最大表示列数
pd.set_option('display.max_rows', 10) # 最大表示行数

カラムとインデックスのリネーム(1つずつ)
df_new = df.rename(columns={'A': 'Col_1'}, index={'ONE': 'Row_1'})

nan
nan

複数のデータ変更
df.loc[:,'col03']=['Tokyo','Osaka','Hokkaido']

データ型を調べる
df.dtypes

行数・列数取得
df.shape

行と列を入れ替え
df = df.T

時系列データ
dates = pd.date_range('2000/01/01′, periods=5,freq='D')

nan
nan

期間内の最安値の探し方
span01=-5
 financial_data02['Close'].rolling(window=span01*-1).min().shift(span01)

nan
nan

# カラム「安値」の一番上の値を関数に格納する

def get_top_value(column):
    top_value = column.iloc[0]
    return top_value


nan
nan

重複削除
transactions_data02.drop_duplicates(subset=['user_id','item_id'])

nan
nan

pandasのrolling()に条件を付け加えて要素を抽出し、
元のDataFrameに結合したい			
df['num_M'] = df['num'].where(df.sex=='M',0).rolling(5).sum()
df['num_F'] = df['num'].where(df.sex=='F',0).rolling(5).sum()

nan
nan

複数のインデックスを指定して読み取る
df01 = pd.read_csv('data.csv', encoding = 'shift-jis', index_col = [0, 1, 2, 3, 4])

氏名で集計した後に、合計を出す
df[['氏名','売上金額']].groupby('氏名').sum()

データ数を数える(欠損値を含む)
df[['氏名','売上金額']].groupby('氏名').size()

複数要素でグルーピング
df[['氏名','商品分類','売上金額']].groupby(['氏名','商品分類']).mean()

上記でインデックスを数字で残す場合
df[['氏名','商品分類','売上金額']].groupby(['氏名','商品分類'],as_index=False).mean()

aggを使って複数の集計
import numpy as np

def cal_tax(s):
   return np.sum(s)*1.08

df[['氏名','売上金額']].groupby('氏名').agg({'売上金額': cal_tax})

自作の関数適用
nan

float型で小数点を切り上げる
mean01 = round(Roulette_data03["出目の差分"].mean(), 1)

float型で任意の小数点以下を切り捨てる


def round_up_float(number, decimal_places):
    multiplier = 10 ** decimal_places
    rounded_number = math.ceil(number * multiplier) / multiplier
    return rounded_number

decimal_places = 2

low_price_mean = round_up_float(low_price_mean, decimal_places)

nan
nan

nan
nan

nan
nan

ピポット実装
df_pivot = df.pivot_table(index='氏名', columns='商品分類',values='売上金額', aggfunc='sum')

ピポット実装(valuesが複数)
df_pivot = financial_data10.pivot_table(index='状態', values=['Review1','Review2','Review3'], aggfunc='count')

ピポット(Nan置き換え)
df_pivot = df.pivot_table(index=['氏名','売上日'], columns='商品分類',values='売上金額', aggfunc='sum',fill_value=0)
df_pivot.applymap('{:,.0f}'.format)

ピポット(合計列追加)
df_pivot = df.pivot_table(index='氏名', columns='商品分類',values='売上金額', aggfunc='sum', margins=True, margins_name='合計')
df_pivot.applymap('{:,.0f}'.format)

nan
nan

merge
2つ以上のカラムをキーに結合
leftやrightの結合方法

concat
縦方向であっても結合すること
3つ以上のデータフレームを結合すること

nan
nan

一般的なマージ
pd.merge(left,right, on='氏名',how='left')

結合をする
pd.merge(left,right, on='氏名')

2つのデータフレームの共通しているキーのみ
結合する方法
pd.merge(left,right,how='inner')

左のデータフレームをベースに
結合する方法
pd.merge(left,right,how='left')

Master_data01['高値日']
pd.merge(left,right,how='right')

共通するデータで結合をして、
左のデータフレームにあるものも右のデータフレームにあるものの、
そのままにしておくマージ
pd.merge(left,right,how='outer')

重複カラム名の指定方法
pd.merge(df01 ,df02, on='氏名', suffixes=['_left', '_right'])

左のカラムをそのままにして、
右に「_重複」の単語を付ける
pd.merge(df01 ,df02, on='氏名', suffixes=[”, '_重複'])

テーブルがある方を表示
pd.merge(df01 ,df04, on='氏名',how='outer', indicator=True)

nan
nan

縦に結合する
pd.concat([left,right])

インデックス番号を再度振り直す
pd.concat([df01, df02], ignore_index=True)

インデックスにラベルを追加
pd.concat([df01, df02, df03],keys=['df01′,'df02′,'df03'])

縦に結合する
pd.concat([left,right],axis=1)

横に結合する
pd.concat([df01, df04],axis='columns')

nan
nan

nan
nan

時系列データへの変換
df['売上日'] = pd.to_datetime(df['売上日'])

インデックスに指定
df_2 = df.set_index('売上日')

インデックスをリネーム
nan

objectの文字列を時系列データへの変換
df02['売上日'] = pd.to_datetime(df02['売上日'], format='%Y年%m月%d日')

ファイルを読みこむ際にindexを時系列にする方法
df = pd.read_csv('sample.csv', encoding='utf-8', header=0, parse_dates=True,index_col='売上日')

時系列データの抽出
financial_data10["日付"]=pd.to_datetime(financial_data10["日付"] )
financial_data10[financial_data10["日付"] > dt.datetime(2019,5,3)]

nan
nan

月曜日の売上金額の平均が算出
df_4 = df_3.set_index(df_3.index.weekday)
df_4.index.name = "曜日番号"
df_4.sum(level="曜日番号").sort_index()

nan
nan

2つの対象セルの中身がいっちしているかどうか
Master_data01["判定_TestCaseId"] = (Master_data01["新_TestCaseId"]== Master_data01["旧_TestCaseId"])

nan
nan

特定のセル内の文字を分割して、
別々のカラム名に分割して表示する
ID_list = Base_table01["Path"].tolist()
ID_list = [item.replace('sites/JPTEPCONGNProjectExt/Shared Documents/General/TEPCO_STEP1/050_TEST/00_Integration Test/00_SS ITa/GENZ_WORK/20.結合テスト/1.結合テスト実施-レビュー/エビデンス/⑨エビレビュー/', '') for item in ID_list]

Base_table01["Path2"] =ID_list
Base_table01["ADOID"] =Base_table01["Path2"].str.split('/',expand=True)[1]
Base_table01["ソリューション"] =Base_table01["Path2"].str.split('/',expand=True)[0]
Base_table01

nan
nan

セル内の値を条件式で書き換える
※値書き換えよう
Hz_data["Hz減算"] = 0
Exclusion_table01["Hz差分"] = Exclusion_table01["Hz差分"].mask((Exclusion_table01["Hz減算"] >=0) &(Exclusion_table01["Hz減算"] <=5), "A")
Exclusion_table01["Hz差分"] = Exclusion_table01["Hz差分"].mask((Exclusion_table01["Hz減算"] >=10) &(Exclusion_table01["Hz減算"] <20), "B")

Exclusion_table01["Hz差分"] = Exclusion_table01["Hz差分"].mask((Exclusion_table01["後期"] <-10) &(Exclusion_table01["後期"] >=-20), "C")
Exclusion_table01["Hz差分"] = Exclusion_table01["Hz差分"].mask((Exclusion_table01["後期"] <-20) &(Exclusion_table01["後期"] >=-30), "D")
Hz_data

セル内の値を条件式で書き換える #0 ,1でフラグを立てる時には便利
df['column1'] = df['column2'].apply(lambda x: 1 if x == 'ok' else 0)

nan
nan

特定のセルの先頭・または末尾から、
文字指定で文字を抽出する
Increase_Table01["Base"] =Increase_Table01_list

Increase_Table01["コード"] =Increase_Table01["Base"].str[-4:]
Increase_Table01["名称"] =Increase_Table01["Base"].str[:-4]

​

この記事が気に入ったらサポートをしてみませんか?