0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【pandas】skiprowsで先頭複数行を無視してDataframeを読み込む

Last updated at Posted at 2025-03-30

結論

pd.read_csvでデータを読み込む際にskiplowsオプションを指定する。

df = pd.read_csv(data, skiplows=low_number)

背景

オープンデータの中には、不要なメタデータ行やヘッダー行が含まれている場合がある。
データ取得と加工を同時に行わない場合、ダウンロードした元データを直接編集することもできる。多くの場合、こちらの方法の方が簡単かつ再利用しやすい。
一方、これらを同時に行いたい場合、プログラムの中でヘッダーを無視する方法を検討する必要がある。

以下のデータは、e-Stat apiを使用して取得した「年齢(3区分),男女別人口及び年齢別割合 - 都道府県,市区町村(令和2年) 北海道 ~ 沖縄県」である。e-Stat apiではjsonとcsvの二つの形式でデータが与えられているが、以下はcsv形式で取得したものである。
これをみると、本来利用したいデータ以外にも、統計実施期間や統計表名といったメタデータが記載されていることが確認できる。

"SURVEY_DATE","202001-202012"
"OPEN_DATE","2022-03-31"
"SMALL_AREA","0"
"COLLECT_AREA","該当なし"
"MAIN_CATEGORY","02","人口・世帯"
"SUB_CATEGORY","01","人口"
"OVERALL_TOTAL_NUMBER","41244"
"UPDATED_DATE","2024-09-30"
"STATISTICS_NAME_SPEC","時系列データ","男女,年齢,配偶関係","","","",""
"TITLE_SPEC","","年齢(3区分),男女別人口及び年齢別割合 - 都道府県,市区町村(令和2年) 北海道 ~ 沖縄県","1) 年齢(3区分)の「総数」には、年齢「不詳」の者を含む。<br>2) 割合は、年齢「不詳」の者を除いて算出している。","","",""
"NOTE","***","当該数値がないもの"
...
"020","人口","100","総数","100","総数","01108","札幌市厚別区","2020000000","2020年","人","125083",""
"020","人口","100","総数","100","総数","01109","札幌市手稲区","2020000000","2020年","人","142625",""
"020","人口","100","総数","100","総数","01110","札幌市清田区","2020000000","2020年","人","112355",""
"020"

データ読み込み

pd.read_csv()でデータを読み込む際にskiplows引数を指定する。引数はint型を。

公式ドキュメント

また、同様に末尾複数行をスキップするskipfooter()もある。

以下のコードは、先述の文字列を読み込むことを想定した例である。StringIo(text)を利用してテキストファイルと同様にpd.read_csv()を使えるようにしている。また、区切り文字を認識するために、sep=","を設定している。

data = StringIo(text)

try:
    df = pd.read_csv(data, sep=",", encoding='utf-8', skiprows=27)
except pd.errors.ParserError as e:
    print("Error parsing CSV:", e)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?