LoginSignup
3
2

More than 3 years have passed since last update.

SQLのLIMIT句によるデータ抽出を、pandas(python)を使って再現して見た

Last updated at Posted at 2020-09-21

はじめに

 最近、プライベートでデータ分析のツールを作成している関係でpandasというpython外部ライブラリを活用している。が、いざ使って見ると、「pandas?なにそれかわいいの?」と動物のパンダ🐼を連想させるヤバい思考に行きつつある状況になる。
 これはまずいと感じ、投稿者はpandasを探し求める旅に出る。
 この記事は、pandasを飼いならすためにpandasをSQLっぽく考えるというデータサイエンス初学者に向けた記事となります。

そもそもpandasとは何か

 pandasとは、構造化された(表形式、多次元、潜在的に不均質)データと時系列データを簡単かつ直感的に操作できるように設計された高速で柔軟な表現力のあるデータ構造を提供するPythonパッケージで、実際的な実世界のデータ分析を行うための基本的な高レベルのビルドを行う事が可能なツールです。
 要は、表データをpythonを使っていい感じに処理して目的のデータ抽出するツールです。

実践

準備

今回は下記の表データ【receipt】を用いてpythonのpandas攻略を行います。(表データはCSV形式)

1-1.png

参考データ:データサイエンス100本ノック
https://github.com/The-Japan-DataScientist-Society/100knocks-preprocess

また、今回はpandasを使用するため、コードは下記のように予め準備しておきます。

python
import pandas as pd
df_receipt = pd.read_csv('receiptのCSVファイルのパス', sep=',')

本題

タイトルにある通り、今回はSQLのLIMIT句によるデータ抽出を、pandasを使って再現します


問題:レシート明細のデータフレーム(df_receipt)から全項目の先頭10件を表示し、どのようなデータを保有しているか目視で確認せよ。

解答・解説

まず、解答を記述するとこんな感じになります。

python
df_receipt.head(10)

そして、図に表すとこんな感じになります。

1-2.png

これをSQL文で表すとこんな感じになります。

SQL
SELECT * FROM receipt LIMIT 10;

この部分を説明すると、receipt表から全ての列を選択し、先に登録された10行を抽出した事を示します。

  • FROM句:データベース内の指定する表を選択する
  • SELECT句:指定した表から抽出すべき列を選択する
  • LIMIT句:抽出する行数を指定する

そして、今回の設問ではSQLではLIMIT句を使用する部分を、pandasでhead()で表現する事により表現が可能となります。

まとめ

pandasを使って、SQLのLIMIT句によるデータ抽出を行いました。pandasはデータベース及びSQLを意識したpythonライブラリなため、普段からSQLを意識するとかなり使いやすいツールだと改めて感じます。

終わりに

 今回、利活用したデータはデータサイエンス協会(DS協会)の「データサイエンス100本ノック」を参考にしております。こちらはJupyter notebookを使用しているので、より見やすいデータが抽出されます。
 この記事を読んで、「実際に実装してみたい!!」という方がおりましたら、下記にその実装に関する記事を上げているので、良かったそちらの記事を参考に是非実装してみて下さい。

データサイエンス初学者にむけた、データサイエンス100本ノックを実装する方法:
https://qiita.com/syuki-read/items/714fe66bf5c16b8a7407

3
2
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
3
2