fill records in pandas dataframe
fill records in pandas dataframe
下のようなx=1
から始まるデータをグラフにしたい時、
単純にplotをしたのでは、xの値が飛んでしまう。
x | y |
---|---|
1 | 3 |
2 | 4 |
5 | 6 |
6 | 10 |
9 | 8 |
そこで、xの値を埋める。
comp_diff = pd.DataFrame({'column_1': range(0, df['column_1'].max() + 2)})
merged_df = comp_diff.merge(df, on='xolumn_1', how='left')
merged_df = merged_df.fillna({'column_2':0})
これで、xの値が飛ばされることなく、グラフを描くことができる。
fill datetime records in pandas dataframe
日付のデータをグラフにしたい時、 単純にplotをしたのでは、上のように、日付の値が飛んでしまう場合がある。
そこで、日付の値を埋める。 たとえば、分ごとにデータを取得している場合は次のようにする。
comp_diff = pd.DataFrame({'date': pd.date_range(df['date'].min(), df['date'].max(), freq='1min')})
merged_df = comp_diff.merge(df, on='date', how='left')
merged_df = merged_df.fillna({'column_2':0})
DateTimeIndex
がしていされているDataFrameに対しては:
plt = plt.asfreq('T').fillna({'column_2': data_key, 'column_3': 0})
asfreq
の引数としてfill_value
を指定することもできる。
When you want to plot data like the following, you cannot plot it simply because the value of x is skipped.
x | y |
---|---|
1 | 3 |
2 | 4 |
6 | 4 |
7 | 5 |
So, fill the value of `x`.
comp_diff = pd.DataFrame({'column_1': range(0, df['column_1'].max() + 2)})
merged_df = comp_diff.merge(df, on='xolumn_1', how='left')
merged_df = merged_df.fillna({'column_2':0})
Then, you can plot the data without skipping the value of `x`.
fill datetime records in pandas dataframe
When you want to plot data like the following, you cannot plot it simply because the value of date is skipped.
date | y |
---|---|
2021-10-01 00:00:00 | 3 |
2021-10-01 00:01:00 | 4 |
2021-10-01 00:05:00 | 4 |
2021-10-01 00:06:00 | 5 |
So, fill the value of `date`.
comp_diff = pd.DataFrame({'date': pd.date_range(df['date'].min(), df['date'].max(), freq='1min')})
merged_df = comp_diff.merge(df, on='date', how='left')
merged_df = merged_df.fillna({'column_2':0})
For DataFrame with `DateTimeIndex`:
plt = plt.asfreq('T').fillna({'column_2': data_key, 'column_3': 0})
You can also specify `fill_value` as an argument of `asfreq`.