はじめに
コジマです。
Pandasで重複するデータを削除するときは
drop_duplicatesを使用するのが一般的ですが、それを使用するとすべての重複を削除してしまいます。
ここで話をするのは
1,1,1,2,2,2,3,3,3,2,2,3,1,1
のようなデータを
1,2,3,2,3,1
のように抜き出すためのTipsです。
drop_duplicatesを使用すると
1,2,3
のようになります。
サンプルソース
方針としては
一つ手前の要素と異なる要素を抜き出す。
ということをします。
記述自体はシンプルです。
import pandas as pd import numpy as np df = pd.Series(data=[1,1,1,2,2,2,3,3,3,2,2,3,1,1]) print('----初期データ----') print(df) # 一つ手前の要素と異なる要素だけを抜き出す df = df[df != df.shift(1)] print('-----削除後データ----') print(df)
import pandas as pd import numpy as np df = pd.Series(data=[1,1,1,2,2,2,3,3,3,2,2,3,1,1]) print('----初期データ----') print(df) # 一つ手前の要素と異なる要素だけを抜き出す df = df[df != df.shift(1)] print('-----削除後データ----') print(df)
出力は以下のようになります。
----初期データ---- 0 1 1 1 2 1 3 2 4 2 5 2 6 3 7 3 8 3 9 2 10 2 11 3 12 1 13 1 dtype: int64 -----削除後データ---- 0 1 3 2 6 3 9 2 11 3 12 1 dtype: int64
データが変化する地点のデータだけほしいときに使えます。
さいごに
シンプルですが、覚書でした。
ほぼこれなんですけどね。
回答した人頭いいな~って思いました。
https://teratail.com/questions/163839
こういうことができる関数がPandasに用意されていると思って調べていたから
遠回りしてしまいました。そうじゃなかったんですね。
データフレームはリスト内包のようにデータの絞り込みができるので、
こういった書き方に慣れておきたいですね。
こういうときにfor文でぐるぐる回すのはアンチパターンですよ!
Pythonのfor文はめちゃめちゃ遅いから使わずに済むなら使わないようにしましょ!
この記事を面白いまたは役に立ったと思ってくれた方は是非私のTwitter(@kojimanotech)を
フォローしてくれたらうれしいです!
もっと学びたい人はこちら
Python、機械学習をもっと学びたいという人のためにおすすめのUdemy講座を紹介いたします!
Pythonの基本文法を押さえたい方はこちらの動画がおすすめです。
エンジニアになりたいと思って駆け出した方がPythonを選んだときはこの講座から始めるとよいと思います。
Python 3 エンジニア認定基礎試験の対策にもなります。
はじめてのPython 少しずつ丁寧に学ぶプログラミング言語Python3のエッセンス
プログラムの基礎が分かる方で機械学習に興味がある方はこちらがおすすめです。
SIGNATEという日本版Kaggleのサービスを実際に使用してハンズオン形式でデータ分析・機械学習を学ぶことができます。
もちろんこの動画だけで特級のデータサイエンティストになれるわけではないですが、機械学習の門を叩くにはとても良い講座だと思います。
【ゼロから始めるデータ分析】 ビジネスケースで学ぶPythonデータサイエンス入門
Pythonのライブラリで必ず押さえておきたいのがNumpy, Pandas, Matplotlibの3つ。
この3つを網羅的に学ぶことができる講座です。
英語の講座ですが、わかりやすい英語ですし、ソースコードメインで解説しているので
ソースコードを一緒に手を動かしながら学べば十分理解することができます。
機械学習を使わない人にもおすすめの講座です。
2021 NumPy, Pandas and Matplotlib A-Z™: for Machine Learning
気になった人はぜひ見てみてくださいね!
以上、コジマでした。