見出し画像

ChatGPT: Code Interpreter

これもデータ分析の進化。。。


このファイルを分析して。
titanic.csv

ChatGPT
アップロードされたファイルの内容を確認しましょう。データの先頭部分を表示してみます。

import pandas as pd

# Load the data
data = pd.read_csv('/mnt/data/titanic.csv')

# Display the first few rows of the data
data.head()

RESULT
   PassengerId  Survived  Pclass  \
0            1         0       3   
1            2         1       1   
2            3         1       3   
3            4         1       1   
4            5         0       3   

                                                Name     Sex   Age  SibSp  \
0                            Braund, Mr. Owen Harris    male  22.0      1   
1  Cumings, Mrs. John Bradley (Florence Briggs Th...  female  38.0      1   
2                             Heikkinen, Miss. Laina  female  26.0      0   
3       Futrelle, Mrs. Jacques Heath (Lily May Peel)  female  35.0      1   
4                           Allen, Mr. William Henry    male  35.0      0   

   Parch            Ticket     Fare Cabin Embarked  
0      0         A/5 21171   7.2500   NaN        S  
1      0          PC 17599  71.2833   C85        C  
2      0  STON/O2. 3101282   7.9250   NaN        S  
3      0            113803  53.1000  C123        S  
4      0            373450   8.0500   NaN        S  

これはタイタニック号の乗客データのようです。各列の意味は以下の通りです:

  • PassengerId: 乗客のID

  • Survived: 生存したかどうか(0 = 死亡、1 = 生存)

  • Pclass: 乗客のクラス(1 = 第一クラス、2 = 第二クラス、3 = 第三クラス)

  • Name: 乗客の名前

  • Sex: 性別

  • Age: 年齢

  • SibSp: 同乗している兄弟姉妹/配偶者の数

  • Parch: 同乗している親/子供の数

  • Ticket: チケット番号

  • Fare: 運賃

  • Cabin: 客室番号

  • Embarked: 乗船した港(C = Cherbourg、Q = Queenstown、S = Southampton)

次にデータの基本的な統計を確認します。その後、どのような分析を行うかを決定しましょう。

# Get the basic statistics of the data
data.describe(include='all')

RESULT
        PassengerId    Survived      Pclass                     Name   Sex  \
count    891.000000  891.000000  891.000000                      891   891   
unique          NaN         NaN         NaN                      891     2   
top             NaN         NaN         NaN  Braund, Mr. Owen Harris  male   
freq            NaN         NaN         NaN                        1   577   
mean     446.000000    0.383838    2.308642                      NaN   NaN   
std      257.353842    0.486592    0.836071                      NaN   NaN   
min        1.000000    0.000000    1.000000                      NaN   NaN   
25%      223.500000    0.000000    2.000000                      NaN   NaN   
50%      446.000000    0.000000    3.000000                      NaN   NaN   
75%      668.500000    1.000000    3.000000                      NaN   NaN   
max      891.000000    1.000000    3.000000                      NaN   NaN   

               Age       SibSp       Parch  Ticket        Fare    Cabin  \
count   714.000000  891.000000  891.000000     891  891.000000      204   
unique         NaN         NaN         NaN     681         NaN      147   
top            NaN         NaN         NaN  347082         NaN  B96 B98   
freq           NaN         NaN         NaN       7         NaN        4   
mean     29.699118    0.523008    0.381594     NaN   32.204208      NaN   
std      14.526497    1.102743    0.806057     NaN   49.693429      NaN   
min       0.420000    0.000000    0.000000     NaN    0.000000      NaN   
25%      20.125000    0.000000    0.000000     NaN    7.910400      NaN   
50%      28.000000    0.000000    0.000000     NaN   14.454200      NaN   
75%      38.000000    1.000000    0.000000     NaN   31.000000      NaN   
max      80.000000    8.000000    6.000000     NaN  512.329200      NaN   

       Embarked  
count       889  
unique        3  
top           S  
freq        644  
mean        NaN  
std         NaN  
min         NaN  
25%         NaN  
50%         NaN  
75%         NaN  
max         NaN  

データの基本的な統計を以下にまとめます:

  • このデータセットには891人の乗客の情報が含まれています。

  • 生存率は約38.4%です。

  • 乗客の平均年齢は約29.7歳ですが、一部の乗客(177人)の年齢情報が欠落しています。

  • 乗客は主に3等クラス(Pclass = 3)に乗船しており、平均的なPclassは2.3です。

  • 乗客は平均して約0.52人の兄弟姉妹/配偶者と0.38人の親/子供と一緒に乗船しています。

  • 平均運賃は約32.20ポンドです。

  • 乗客の大半は男性(577人)です。

  • 乗船した港の情報が2人分欠落していますが、大部分の乗客(644人)はSouthampton(S)から乗船しています。

このデータをもとに、いくつかの分析を行うことができます。例えば、以下のような質問に答えることが可能です:

  1. 性別やクラスによって生存率は異なるのか?

  2. 年齢は生存率に影響を与えるのか?

  3. 家族と一緒に乗船した人々は単独で乗船した人々と比べて生存率が異なるのか?

分析を進める前に、どの質問に焦点を当てるかを決めてください。

分析は1から3全てお願いします。まずは1からお願いいます。

# Analyzing survival rates by Sex and Pclass

# Group by Sex and Pclass, then calculate the mean of Survived
survival_by_sex_pclass = data.groupby(['Sex', 'Pclass'])['Survived'].mean()

survival_by_sex_pclass

RESULT
Sex     Pclass
female  1         0.968085
        2         0.921053
        3         0.500000
male    1         0.368852
        2         0.157407
        3         0.135447
Name: Survived, dtype: float64

性別とクラス別の生存率は以下の通りです:

  • 女性、一等クラス:96.8%

  • 女性、二等クラス:92.1%

  • 女性、三等クラス:50.0%

  • 男性、一等クラス:36.9%

  • 男性、二等クラス:15.7%

  • 男性、三等クラス:13.5%

この結果から、女性の生存率が男性よりも高いこと、また、より高いクラスに乗船している乗客の方が生存率が高いことがわかります。

次に、年齢が生存率にどのように影響するかを分析しましょう(質問2)。

import matplotlib.pyplot as plt
import seaborn as sns

# Drop rows with missing Age
data_age_cleaned = data.dropna(subset=['Age'])

# Plot
plt.figure(figsize=(10,6))
sns.histplot(data=data_age_cleaned, x="Age", hue="Survived", element="step", stat="density", common_norm=False)
plt.title('Survival Rates by Age')
plt.xlabel('Age')
plt.ylabel('Density')
plt.show()


 

年齢による生存率の分布を示す上記のヒストグラムから、以下のことが観察できます:

  • 若い乗客(特に0-5歳の乗客)は他の年齢層に比べて生存率が高いようです。これはおそらく、子供を優先的に救助した結果でしょう。

  • 15歳から30歳までの乗客は比較的高い死亡率を示しています。

  • それ以上の年齢層では、生存率と死亡率の差はそれほど顕著ではありません。

次に、家族と一緒に乗船した人々が単独で乗船した人々と比べて生存率が異なるかどうかを分析しましょう(質問3)。

# Create a new feature FamilySize which combines SibSp and Parch
data['FamilySize'] = data['SibSp'] + data['Parch'] + 1  # +1 for the passenger themself

# Group by FamilySize and calculate the mean of Survived
survival_by_familysize = data.groupby('FamilySize')['Survived'].mean()

survival_by_familysize

RESULT
FamilySize
1     0.303538
2     0.552795
3     0.578431
4     0.724138
5     0.200000
6     0.136364
7     0.333333
8     0.000000
11    0.000000
Name: Survived, dtype: float64

家族と一緒に乗船した人々と単独で乗船した人々の生存率は以下の通りです:

  • 家族なし(1人): 30.4%

  • 家族2人: 55.3%

  • 家族3人: 57.8%

  • 家族4人: 72.4%

  • 家族5人: 20.0%

  • 家族6人: 13.6%

  • 家族7人: 33.3%

  • 家族8人: 0%

  • 家族11人: 0%

この結果から、一人で乗船した乗客よりも小さな家族(2-4人)で乗船した乗客の方が生存率が高いことがわかります。しかし、大家族(5人以上)の生存率は一人の乗客や小さな家族よりも低い傾向にあります。

以上の結果を総合すると、女性であること、一等クラスに乗船していること、若年または小さな家族と一緒に乗船していることが、生存率を高める要素であることが示唆されます。

この記事が気に入ったらサポートをしてみませんか?