『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ファイルは、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)