まず第一には、明確にする必要があります。
Pythonのデータクレンジング・ソリューションは、ビッグデータではありません!!
ビッグデータは、通常のクリーニングやMRデータのために使用されるスパーク!!
主なビジネスデータやWebログへのデータソースビッグデータ!!!
(sqoop /水路/ NiFi /カフカ)
領収書の収集 - >>データ入力 - データクレンジング>> - >>データ処理 - データ統合>> - >>規制データ - データ解析>> - >>データサービス
- データ収集は、データソースの基本的な方法を理解し、
- 、実質的にデータクリーニングプロセスおよび方法を理解します
- データクリーニングのPythonを実装する方法を把握
- データ検証のPython実装を使用する方法を把握
- メタデータを学び、ビッグデータ環境におけるその重要な役割を理解します
- データストレージ、処理、統合、分析、およびサービスの基本的な理解の概要
データ収集
データを決定するために収集されたデータの有効性は、収集したデータの妥当性を検証するためのデータ収集方法を開発するために、データ収集の場を決定するために収集する必要が懸念
ソース
ソース | 抽出 | 目標 |
---|---|---|
ビジネスデータ(RDB) | エクスポートファイル | データ統合 |
データのインポートSqoop | ||
Webログ | 水路/ NiFi /カフカが住んでいた (フォーカス) | |
パートナーデータ | データ統合/サービス | |
ソーシャル・ネットワーキング/公開データ | クロールデータ | データ統合 |
ニュース掲示板メール/会議データ | 特殊なデータ抽出モード | データ統合 |
物事のデバイスデータ | NiFi /特別なデータの抽出方法 | データ統合 |
他の | 特殊なデータ抽出モード |
データ品質
-
データ品質は、データ収集の最も重要な段階であります
-
一般的なデータ品質の問題
- 重複データ
- 欠落データ
- データ関連行方不明
- 不正なデータ
- フィールドに入力エラー
- データ形式が正しくありません
-
正確、完全、総合的、効果的、一貫して統一フォーマットを決定するために、データ品質の原則、繰り返しません
データ検証
-
データ検証データの有効な検証データセット
- データ型チェック
- データ形式を確認します
-
データ検証の前提
- ビジネスニーズを理解します
- データ構成、構造との関連性を理解します
-
メソッドのチェックデータ
- schema/meta-data/规则
- データ検証ツール-SAS
- 書かれた検証プログラム
-
データは何回かの実施形態をチェックします
データ検証ツール-voluptuous
python>> pip install voluptuous
用Schema校验数据有效性
使用fillna的多种方式填充NaN值
使用interpolate()插值器填充NaN值,根据日期或时间按值等差填充
使用dropna删除包含缺失值的记录
-
正当しかし、離れたデータ値のほとんどから、外れ値
-
標準偏差を標準偏差により算出された異常決意値が異常値範囲Tの範囲を決定し、Tの絶対値が異常データ値の頻度分布によって算出された値よりも大きい分布の値の範囲の90%の値を超え
-
外れ値の補正は、(ウィンザー法)Winsorizingに影響を与えます
- T(例えば、1.95)*標準偏差+平均
- 外れ値補正値+1または-1境界として、境界は反映されません
9、Pythonの統合された火花
- アナコンダは、Linuxへのインストール、および環境変数を設定します
- スパークは、Linuxにインストールされ、あなたは環境変数を設定することができるようになります:
SPARK_HOME 和 SPARK_CONF_DIR
- 次の手順を実行し
ipython
from notebook.auth import passwd
passwd()
#键入密码
#获取sha1值,复制
#rw
#sha1:0cc7d44db1b9:1ce93f146c1e0faaebf73740ca9db8ba90c7adde
cd~
jupyter notebook --generate-config
vi ./.jupyter/jupyter_notebook_config.py
#添加输入以下内容
c.NotebookApp.allow_root = True
c.NotebookApp.ip = '*'
c.NotebookApp.open_browser = False
c.NotebookApp.password = 'sha1:粘贴上一步复制的值'
c.NotebookApp.port = 7070
cd~
vi /etc/profile
#添加以下内容
export PYSPARK_PYTHON=$ANACONDA_HOME/bin/python3
export PYSPARK_DRIVER_PYTHON=$ANACONDA_HOME/bin/jupyter
export PYSPARK_DRIVER_PYTHON_OPTS="notebook"
ipython_opts="notebook -pylab inline"
source /etc/profile
cd~
vi .jupyter/jupyter_notebook_config.py
#添加以下内容
c.NotebookApp.notebook_dir='自己定义的工作目录'
ノートブックを使用して開発スパーク
- CMD:pyspark
- jupyter 7070に接続されているブラウザ
- 環境へのノートブック+スパーク
それはpysparkスパーク、スカラ座に似た構文を、間に以下の主な相違点で直接使用することができます
1は、無名関数を書か:Scalaは直接書き込まれ、pyがラムダ式は、
2、イテラブル(リスト、カラム)のシンボルの値、Scalaは(ある)または[]、反対のPyとすることができます
複雑なフィールドを解決pyspark使用
from pyspark.sql.functions import *
from pyspark.sql.types import *
df = spark.read.option("header", "true").csv("file:///root/example/movies_metadata.csv")
# Define the schema for the movie category data field
genres = ArrayType(StructType([StructField("id", IntegerType(), False), StructField("name", StringType(), False)]))
# Organize the movie category with the original move id
df_MovieCategory = df.withColumn("movie_category", from_json(col("genres"), genres)) \
.select(col("id"), col("movie_category")).select(col("id"), explode(col("movie_category"))) \
.select(col("id"), col("col.name"))