『Pythonによるデータ分析』第2章学習ノート
3878 ワード
『Pythonによるデータ分析』第2章学習ノート
本編の博文は『Pythonを利用してデータ分析を行う』第二章の学習ノートで、原書コードはpython 2を使用するためである.7,python 3を用いて本書を学習し、本書の内容を再実現する.本人もPythonを使って分析している初心者ですが、ご意見やアドバイスがあればご相談ください.データセットのダウンロード先:https://github.com/wesm/pydata-book
インポートデータ データセットのマージ データピボットテーブルの使用 データフィルタ データソート グラフ作成 2.1 bitからlyの1.usa.govデータ
差し控える
2.2 MovieLens 1 Mデータセット分析
データのインポート
元のデータセットは.Dataファイルは、
スライス構文を使用できます.
直接使うこともできます.head()メソッドは、最初の5行を示します.
データセットのマージ
3つのテーブルに散在しているデータを分析するのは簡単ではありません.性別や年齢に基づいて映画の平均得点を計算し、すべてのデータを1つのテーブルに統合すると問題は簡単です.
これでpandasを少し熟知すれば,任意のユーザや映画の属性に基づいてスコアデータを集約することが容易になる.各映画の平均得点を計算するために、
これにより、データセットの各映画の性別別の平均得点を含む別のDataFrameが生成されます.
データフィルタ
現在、評価点数が250本未満の映画をフィルタリングしようとすると、まず
このインデックスには、250以上のスコアデータを持つ映画名があり、必要な行を選択できます.
データのソート
女性観客が一番好きな映画を知るために、F列を降順に並べることができます.
本編の博文は『Pythonを利用してデータ分析を行う』第二章の学習ノートで、原書コードはpython 2を使用するためである.7,python 3を用いて本書を学習し、本書の内容を再実現する.本人もPythonを使って分析している初心者ですが、ご意見やアドバイスがあればご相談ください.データセットのダウンロード先:https://github.com/wesm/pydata-book
差し控える
2.2 MovieLens 1 Mデータセット分析
データのインポート
元のデータセットは.Dataファイルは、
read_table
を使用して直接インポートできます.import pandas as pd
import numpy as np
users = pd.read_table(r'/Users/SEN/Downloads/pydata-book-2nd-edition/datasets/movielens/users.dat',
sep='::',header = None, names = ['user_id','gender','age','occupation','zip'],engine='python')
ratings = pd.read_table(r'/Users/SEN/Downloads/pydata-book-2nd-edition/datasets/movielens/ratings.dat',
sep='::',header = None, names= ['user_id','movie_id','rating','timestamp'], engine='python')
movies = pd.read_table(r'/Users/SEN/Downloads/pydata-book-2nd-edition/datasets/movielens/movies.dat',
sep='::',header = None, names= ['movie_id','title','genres'],engine='python')
スライス構文を使用できます.
users[:5]
ratings[2:3]
直接使うこともできます.head()メソッドは、最初の5行を示します.
users.head()
データセットのマージ
3つのテーブルに散在しているデータを分析するのは簡単ではありません.性別や年齢に基づいて映画の平均得点を計算し、すべてのデータを1つのテーブルに統合すると問題は簡単です.
data = pd.merge(pd.merge(ratings,users),movies)
data.head()
これでpandasを少し熟知すれば,任意のユーザや映画の属性に基づいてスコアデータを集約することが容易になる.各映画の平均得点を計算するために、
pd.pivot_table
の方法を使用することができます.mean_ratings = pd.pivot_table(data, index='title', values=['rating'], columns='gender',
aggfunc= 'mean')['rating']
mean_ratings.head()
これにより、データセットの各映画の性別別の平均得点を含む別のDataFrameが生成されます.
データフィルタ
現在、評価点数が250本未満の映画をフィルタリングしようとすると、まず
title
をグループ化し、size()
を用いて映画グループサイズを含むSeries
の対象を得る.ratings_by_title = data.groupby('title').size()
active_titles = ratings_by_title.index[ratings_by_title>=250]
このインデックスには、250以上のスコアデータを持つ映画名があり、必要な行を選択できます.
mean_ratings = mean_ratings.loc[active_titles]
データのソート
女性観客が一番好きな映画を知るために、F列を降順に並べることができます.
mean_ratings.sort_values(by='F',ascending=False)