測定値の処理
4683 ワード
実測値は何ですか。
名前の通り、これは測定されていない値です.
どんな値段も取らないし、もちろんゼロではありません.
通常nullまたはNaNとして表される.
(bigqueryではieee divide関数はnullとNaNの区切り記号のように見えますが...これはさらに理解する必要があります)
自然発生する可能性のある決断値もあります.
たとえば、小切手カード決済データに決済試行ログデータテーブルがあることを想像すると、決済試行金額と実際の決済金額の列があります.
また、残高が不足していれば実際に支払うことはないので、NULL値に設定できます.
処理方法
null値では何も分析できません.
したがって、ローの値が空の場合、完全なデータのセットだけで分析できます.これは最も簡単かもしれません.以下の場合、そのような決定を簡単にすることは難しい.
1.データを1つずつ送信するのが惜しい場合.つまり、観測されたデータセット自体が小さいと、
2.季節性を有するデータについて、ある特定の季節性時期のデータが失われた場合、分析結果も影響を受ける.データセットの規模が小さいほど、影響が大きくなります.
残念なことにnullの代わりに値を検索します。
方法特定の値で配置
方法平均値(代表値)として入れる
方法前/後の値として
方法補間
まずデータセットを検索し、bigquery-public-dataセットに天気表があります. select
date,
sum(case when postal_code = '10054' then avg_temperature_air_2m_f end) avg_10054,
sum(case when postal_code = '10056' then avg_temperature_air_2m_f end) avg_10056,
sum(case when postal_code = '12014' then avg_temperature_air_2m_f end) avg_12014,
sum(case when postal_code = '22014' then avg_temperature_air_2m_f end) avg_22014,
sum(case when postal_code = '23025' then avg_temperature_air_2m_f end) avg_23025,
sum(case when postal_code = '24123' then avg_temperature_air_2m_f end) avg_24123,
from
`bigquery-public-data.covid19_weathersource_com.postal_code_day_history`
where 1=1
and country = 'IT' # 국가 코드 IT는 이탈리아라 함. 출처: [국가코드조회](https://eminwon.qia.go.kr/common/CountrySP.jsp)
and date between date( '2021-04-13' ) and date( '2021-04-17' ) # null값 주변의 날짜들도 같이 가져오기 위해
and postal_code in ( '10054', '10056', '12014', '22014', '23025', '24123' ) # 예시를 위해 지정한 임의의 우편번호
group by date
order by date
null値では何も分析できません.
したがって、ローの値が空の場合、完全なデータのセットだけで分析できます.これは最も簡単かもしれません.以下の場合、そのような決定を簡単にすることは難しい.
1.データを1つずつ送信するのが惜しい場合.つまり、観測されたデータセット自体が小さいと、
2.季節性を有するデータについて、ある特定の季節性時期のデータが失われた場合、分析結果も影響を受ける.データセットの規模が小さいほど、影響が大きくなります.
残念なことにnullの代わりに値を検索します。
方法特定の値で配置
方法平均値(代表値)として入れる
方法前/後の値として
方法補間
まずデータセットを検索し、bigquery-public-dataセットに天気表があります. select
date,
sum(case when postal_code = '10054' then avg_temperature_air_2m_f end) avg_10054,
sum(case when postal_code = '10056' then avg_temperature_air_2m_f end) avg_10056,
sum(case when postal_code = '12014' then avg_temperature_air_2m_f end) avg_12014,
sum(case when postal_code = '22014' then avg_temperature_air_2m_f end) avg_22014,
sum(case when postal_code = '23025' then avg_temperature_air_2m_f end) avg_23025,
sum(case when postal_code = '24123' then avg_temperature_air_2m_f end) avg_24123,
from
`bigquery-public-data.covid19_weathersource_com.postal_code_day_history`
where 1=1
and country = 'IT' # 국가 코드 IT는 이탈리아라 함. 출처: [국가코드조회](https://eminwon.qia.go.kr/common/CountrySP.jsp)
and date between date( '2021-04-13' ) and date( '2021-04-17' ) # null값 주변의 날짜들도 같이 가져오기 위해
and postal_code in ( '10054', '10056', '12014', '22014', '23025', '24123' ) # 예시를 위해 지정한 임의의 우편번호
group by date
order by date
select
date,
sum(case when postal_code = '10054' then avg_temperature_air_2m_f end) avg_10054,
sum(case when postal_code = '10056' then avg_temperature_air_2m_f end) avg_10056,
sum(case when postal_code = '12014' then avg_temperature_air_2m_f end) avg_12014,
sum(case when postal_code = '22014' then avg_temperature_air_2m_f end) avg_22014,
sum(case when postal_code = '23025' then avg_temperature_air_2m_f end) avg_23025,
sum(case when postal_code = '24123' then avg_temperature_air_2m_f end) avg_24123,
from
`bigquery-public-data.covid19_weathersource_com.postal_code_day_history`
where 1=1
and country = 'IT' # 국가 코드 IT는 이탈리아라 함. 출처: [국가코드조회](https://eminwon.qia.go.kr/common/CountrySP.jsp)
and date between date( '2021-04-13' ) and date( '2021-04-17' ) # null값 주변의 날짜들도 같이 가져오기 위해
and postal_code in ( '10054', '10056', '12014', '22014', '23025', '24123' ) # 예시를 위해 지정한 임의의 우편번호
group by date
order by date
方法特定の値で配置
df_specific_value.fillna(0) # 0으로 채워넣기
記入しましたが、役に立たないようです.0で埋めると良い場合があります
平均値ではなく、mode(チェ・フィンチ)やmedian(中位数)などの適当な代表値であれば使用できる方法だ.
# 각 지역(우편번호)마다의 평균값을 준비 하기
mean_10054 = df[ 'avg_10054' ].mean()
mean_10056 = df[ 'avg_10056' ].mean()
mean_12014 = df[ 'avg_12014' ].mean()
mean_22014 = df[ 'avg_22014' ].mean()
mean_23025 = df[ 'avg_23025' ].mean()
mean_24123 = df[ 'avg_24123' ].mean()
# 준비한 평균값을으로 결측치를 대신하기
df_mean['avg_10054'].fillna(mean_10054, inplace = True)
df_mean['avg_10056'].fillna(mean_10056, inplace = True)
df_mean['avg_12014'].fillna(mean_12014, inplace = True)
df_mean['avg_22014'].fillna(mean_22014, inplace = True)
df_mean['avg_23025'].fillna(mean_23025, inplace = True)
df_mean['avg_24123'].fillna(mean_24123, inplace = True)
df_mean
しかしこの場合、前後2日間の日付しか持ってこなかったのですが、1年だったら?上のデータはイタリアの気温で、イタリアはわが国のように四季がはっきりしています.
これにより、代表値で測定値を加えると、データが歪む可能性が完全にあります.
(例えば、夏の気温データが実測であれば、年中平均気温は入力できません)
方法前または後の値
季節的な特徴があれば、考えられる方法です.
しかし、欠点はnullが最初または最後に現れると使用できないことです.
# 직전 값으로 넣기
df_forward.fillna(method = 'pad', inplace = True)
# 직후 값으로 넣기
df_backward.fillna(method = 'bfill', inplace = True)
方法補間
線形補間法を用いて,空の値の各位置を測定値の代わりに線形補間法を用いた.
df_interpolate.interpolate( method = 'linear', inplace = True)
例:
0
1.25
null
null
2
上記のデータを実測値の代わりに補間すると、
0
1.25
1.5
1.75
2
結果は以上の通りです.
テーブル・カラム・データのnull値を解放せずに、置換する値を検索すると、
時期の流れを示すとともにnull値を滑らかに塗りつぶすことが重要であるため,この点を考慮して方法が望ましい.
断面がテーブル列でない場合は、代表値を加算できます.
(データ分析の聖地タイタニック生存分析では、費用が空の値に支払われると、測定値を平均データに置き換えて分析するノートも見られます…)
Reference
この問題について(測定値の処理), 我々は、より多くの情報をここで見つけました https://velog.io/@ssam/결측값-처리하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol