Parquetファイルの中身を確認するためにJupyter Notebookを起動するのは大げさすぎる。python -c のワンライナーなら、ターミナルから即座にデータを検証できます。
本記事では、データ分析プロジェクトで日常的に使っているワンライナー集を紹介します。Claude Code内でのBashツールからも直接実行できるため、AI駆動開発とも相性が良いテクニックです。
基本操作:データの中身を確認する
先頭N行を表示
最も基本的な確認。ファイルの構造とデータの雰囲気を掴みます。
1python -c "2import pandas as pd3df = pd.read_parquet('path/to/file.parquet')4print(df.head(10))5"カラム一覧と型を表示
1python -c "2import pandas as pd3df = pd.read_parquet('path/to/file.parquet')4print(df.dtypes)5print(f'\nカラム数: {len(df.columns)}')6print(f'行数: {len(df)}')7"データフレームの基本統計量
1python -c "2import pandas as pd3df = pd.read_parquet('path/to/file.parquet')4print(df.describe())5"構造確認:スキーマとメタデータ
Parquetのスキーマを直接確認
pandasを経由せず、pyarrowでParquetのスキーマ情報を確認できます。
1python -c "2import pyarrow.parquet as pq3schema = pq.read_schema('path/to/file.parquet')4print(schema)5"ファイルサイズと行グループ情報
1python -c "2import pyarrow.parquet as pq3pf = pq.ParquetFile('path/to/file.parquet')4print(f'行グループ数: {pf.metadata.num_row_groups}')5print(f'総行数: {pf.metadata.num_rows}')6print(f'カラム数: {pf.metadata.num_columns}')7"データ検証:品質チェック
NULL値の確認
1python -c "2import pandas as pd3df = pd.read_parquet('path/to/file.parquet')4null_counts = df.isnull().sum()5print(null_counts[null_counts > 0])6if null_counts.sum() == 0:7 print('NULL値なし')8"重複行の確認
1python -c "2import pandas as pd3df = pd.read_parquet('path/to/file.parquet')4dup_count = df.duplicated().sum()5print(f'重複行: {dup_count}')6if dup_count > 0:7 print(df[df.duplicated(keep=False)].head(10))8"日付範囲の確認
時系列データでは日付範囲の確認が頻繁に必要です。
1python -c "2import pandas as pd3df = pd.read_parquet('path/to/file.parquet')4date_col = 'date' # 日付カラム名を指定5print(f'最古: {df[date_col].min()}')6print(f'最新: {df[date_col].max()}')7print(f'期間: {df[date_col].max() - df[date_col].min()}')8"応用:フラグ集計と異常値検出
boolカラムの集計
データにフラグ(True/False)カラムがある場合、検出数と割合を一括確認できます。
1python -c "2import pandas as pd3df = pd.read_parquet('path/to/file.parquet')4# boolカラムの集計5bool_cols = df.select_dtypes(include='bool').columns6for col in bool_cols:7 true_count = df[col].sum()8 print(f'{col}: {true_count}件 ({true_count/len(df)*100:.2f}%)')9"数値カラムの異常値チェック
前日比の変動率で外れ値を検出する例です。
1python -c "2import pandas as pd3df = pd.read_parquet('path/to/file.parquet')4target_col = 'value' # 対象カラム名を指定5df['change_pct'] = df[target_col].pct_change() * 1006outliers = df[df['change_pct'].abs() > 10] # 10%以上の変動7print(f'異常変動: {len(outliers)}件')8if len(outliers) > 0:9 print(outliers[['date', target_col, 'change_pct']].head(10))10"ファイル命名規則の活用
Parquetファイルを大量に扱うプロジェクトでは、命名規則が重要です。たとえば以下のような構成にしておくと、シェルのglob展開で特定の条件のファイルを素早く絞り込めます。
1data/2├── analytics_daily/3│ └── report_typeA_1308_2025-07-25.parquet4├── analytics_weekly/5│ └── report_typeB_5386_2025-07-18.parquet6└── ...1# 特定の分析種別のファイル一覧2ls data/analytics_daily/report_typeA_*Claude Code内での活用
Claude CodeのBashツールから直接これらのワンライナーを実行できるため、AIとの対話の中でデータの状態を即座に確認できます。
1人間: 「分析結果のParquetファイルの中身を確認して」2AI: python -c "..." を実行3AI: 「3,200行のデータで、フラグカラムのTrue件数は23件です」ワンライナーのメリットは、Jupyter NotebookやREPLを起動する必要がなく、コマンド一発で結果が得られることです。Claude Codeとの組み合わせでは特に、確認→修正→再確認のサイクルを高速に回せます。
複数ファイルの一括検証
1python -c "2import pandas as pd3from pathlib import Path4
5target_dir = Path('data/analytics_daily')6parquet_files = list(target_dir.glob('*.parquet'))7print(f'ファイル数: {len(parquet_files)}')8
9for f in parquet_files[:5]: # 先頭5ファイルのみ表示10 df = pd.read_parquet(f)11 print(f'{f.name}: {len(df)}行, {len(df.columns)}列')12"まとめ
| 用途 | コマンド |
|---|---|
| 先頭N行表示 | df.head(10) |
| カラム型確認 | df.dtypes |
| NULL値チェック | df.isnull().sum() |
| 重複チェック | df.duplicated().sum() |
| 日付範囲確認 | df[col].min() / df[col].max() |
| フラグ集計 | df.select_dtypes(include='bool') |
| スキーマ確認 | pq.read_schema(path) |
python -c ワンライナーは、Parquetに限らずCSVやJSONの検証にも応用できます。ターミナルから離れずにデータを確認する習慣をつけると、開発のテンポが格段に上がります。