pandasの基本的な統計分析とデータ操作の実践

pandasの基本的な統計分析と実践問題

1. データの読み込みと書き込み

(1)データベースからのデータ読み込み


import pandas as pd
from sqlalchemy import create_engine

engine = create_engine('mysql+pymysql://user:pass@localhost:3306/database_name?charset=utf8')
data = pd.read_sql_table('order_details', con=engine)
data_query = pd.read_sql_query('SELECT * FROM order_details', con=engine)
data_read = pd.read_sql('order_details', con=engine)
data_sql = pd.read_sql('SELECT * FROM order_details', con=engine)
関数名説明
read_sql_table特定のテーブルのみを読み込む。クエリは実行できない。
read_sql_querySQLクエリを実行し、その結果を読み込む。
read_sqlテーブル名またはSQLクエリの両方に対応。テーブル名またはクエリを指定してデータを読み込む。
パラメータ名説明
sqlまたはtable_nameテーブル名またはSQLクエリを指定します。
conデータベース接続情報。
index_col行インデックスとして使用する列を指定します。
coerce_float小数点データをfloat64に変換します。
columns読み込む列名を指定します。

(2)テキストファイルの読み込みと書き込み


import pandas as pd
data = pd.read_table('./data/job_info.txt', encoding='utf-8', sep=',')
csv_data = pd.read_csv('./data/job_info.csv')
パラメータ名説明
filepathファイルパスを指定します。
sep区切り文字を指定します。
headerヘッダー行を指定します。
names列名を指定します。
index_colインデックス列を指定します。
dtype列のデータ型を指定します。
engineデータ解析エンジンを指定します。

(3)Excelファイルの読み込みと書き込み


import pandas as pd
excel_data = pd.read_excel('./data/chipotle.xlsx')
パラメータ名説明
ioファイルパスを指定します。
sheet_name読み込むシート名を指定します。
headerヘッダー行を指定します。
names列名を指定します。
index_colインデックス列を指定します。
dtype列のデータ型を指定します。

2. DataFrameの基本操作

(1)DataFrameの基本属性

属性名戻り値
valuesデータの値
index行インデックス
columns列名
dtypesデータ型
size要素数
ndim次元数
shape行数×列数

(2)データのアクセス


import pandas as pd
df = pd.read_excel('./data/chipotle.xlsx')
print(df['quantity'])
print(df[['order_id', 'item_name']])
print(df['quantity'][:5])

(3)locとilocの違い


print(df.iloc[2:5, 2])
print(df.loc[2:5, 'item_name'])
メソッド説明
loc行または列の名前を指定してデータを取得します。
iloc行または列の位置を指定してデータを取得します。

(4)データの追加と削除

パラメータ名説明
labels削除する行または列を指定します。
axis0: 行削除, 1: 列削除
inplaceTrueの場合、元のデータフレームが変更されます。

3. 時間系列データの処理

クラス名説明
Timestamp特定の時刻を表す基本クラス。
Period一定期間を表すクラス。
Timedelta期間の差を表すクラス。
DatetimeIndexTimestampのインデックス。
PeriodIndexPeriodのインデックス。
TimedeltaIndexTimedeltaのインデックス。

4. 実践問題

チポトレのデータを分析します。

問題番号内容
1データをchipoという名前のデータフレームに読み込む。
2最初の10行を表示する。
3データフレームの列数を表示する。
4全ての列名を表示する。
5データフレームのインデックスを表示する。
6最も注文数の多い商品を表示する。
7item_name列のユニークな商品数を表示する。
8全ての商品の注文数を合計する。
9item_priceを浮動小数点数に変換する。
10収入を計算する。
11注文の総数を表示する。
12各注文の平均金額を表示する。

import pandas as pd

# 問題1
chipotle_df = pd.read_table('./data/chipotle.tsv')
chipotle_df.to_excel('./data/chipotle.xlsx')

# 問題2
print("最初の11行:\n", chipotle_df.head(10))

# 問題3
print("列数:", chipotle_df.shape[1])

# 問題4
print("列名:", chipotle_df.columns.tolist())

# 問題5
print("インデックス:", chipotle_df.index)

# 問題6
most_ordered_item = chipotle_df.groupby('item_name')['quantity'].sum().idxmax()
print("最も注文数の多い商品:", most_ordered_item)

# 問題7
unique_items = chipotle_df['item_name'].nunique()
print("ユニークな商品数:", unique_items)

# 問題8
total_orders = chipotle_df['quantity'].sum()
print("商品の総注文数:", total_orders)

# 問題9
chipotle_df['item_price'] = chipotle_df['item_price'].str.replace('$', '').astype(float)
print("item_priceの型:", chipotle_df['item_price'].dtype)

# 問題10
revenue = (chipotle_df['quantity'] * chipotle_df['item_price']).sum()
print("収入:", round(revenue, 2), "$")

# 問題11
order_count = chipotle_df['order_id'].nunique()
print("注文数:", order_count)

# 問題12
average_order = chipotle_df.groupby('order_id')['item_price'].sum().mean()
print("平均注文金額:", round(average_order, 2), "$")

タグ: Pandas データフレーム 時系列データ

8月2日 17:54 投稿