机器学习基础-pandas

发布于:2025-07-31 ⋅ 阅读:(19) ⋅ 点赞:(0)


二、 

现在有一组从 2006 年到 2016 1000 部最流行的电影数据
数据来源: Sunday EDA | Kaggle
  • 问题1:计算电影数据中评分的平均分,导演的人数等信息
  • 问题2:对于这一组电影数据,呈现rating,runtime的分布情况,
  • 问题3:对于这一组电影数据,统计电影分类(genre)的情况

 

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#%%
data =pd.read_csv('../data/IMDB-Movie-Data.csv')
data
#%%
# 评分的平均
data["Rating"].mean()
#%%
# 导演人数
len(data["Director"].unique())
#%%

runtime = data["Runtime (Minutes)"]
plt.hist(runtime,bins=300)
plt.show()
#%%
rating = data['Rating']
plt.hist(rating,bins=300)
plt.show()
#%%
# 获取将每一行转为列表便于遍历
genres =data['Genre'].apply(lambda x : x.split(","))
genres
#%%
# 遍历每个元素并去重获得所有电影类型
list = []
for i in genres:
    for j in i:
        list.append(j)
arr = np.array(list)
arr=np.unique(arr)
arr
#%%
# 创建一个全为0的数组,
df = pd.DataFrame(np.zeros((len(genres),len(arr))),columns=arr)
df
#%%
# 当个样本出现某个类型时将该样本对应到df的索引和类型设为1
for i,index in zip(genres,genres.index):
    for j in i:
        df.loc[index, j] = 1
df
#%%
# 统计
df[df==1].count(axis=0)
#%%

 三、

使用Pandas读取Kaggle上的“Titanic: Machine Learning from Disaster”数据集
  1. 使用Pandas对数据进行清洗,包括处理缺失值、转换数据类型等。
  2. 使用numpy对数据进行一些基本的统计计算,比如计算某些列的平均值、标准差等。
  3. 使用Pandas对数据进行分组,并计算每个组的生存人数和死亡率。
  4. 使用matplotlib绘制不同特征(比如年龄、性别、舱位等)与生存情况的关系图。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#%%
train = pd.read_csv("../data/titanic/train.csv")
test = pd.read_csv("../data/titanic/test.csv")
data=pd.concat([train,test],axis=0)
data.set_index("PassengerId",inplace=True)
data
#%%
data.describe()
#%%
data.isna().sum()
#%%
# 目的主要针对Survived,故若Survived为空直接删除,不进行填充
data.dropna(subset=["Survived"],inplace=True)
# 直接均值填充
data['Age']=data['Age'].fillna(int(data['Age'].mean()))
data['Embarked']=data['Embarked'].fillna(data['Embarked'].mode()[0])
data.isna().sum()
#%%
print("std:",data['Age'].std(),"\nmean:", data['Age'].mean())
#%%
data
#%%
Survived_group = data["Survived"].groupby(data["Survived"]).count()
Survived_group
#%%
# 死亡人口 / 总人口 * 100%
Survived_group.iloc[0]/(Survived_group.iloc[0]+Survived_group.iloc[1])
#%%
# 使用matplotlib绘制不同特征(比如年龄、性别、舱位等)与生存情况的关系图
good = data[data["Survived"]==1]["Sex"]
bad = data[data["Survived"]==0]["Sex"]
m_bad = bad[bad=="male"]
f_bad = bad[bad=="female"]
m_good = good[good=="male"]
f_good=good[good=="female"]
# plt.bar()
#%%
x1=["male_survived","female_survived"]
x2=["male_no_survived","female_no_survived"]
y1= [m_good.count(),f_good.count()]
y2=[m_bad.count(),f_bad.count()]
fig,axes =plt.subplots(2,1) 
axes[0].bar(x1,y1,color=["red",'b'])
axes[1].bar(x2,y2,color=["red",'b'])
plt.show()


网站公告

今日签到

点亮在社区的每一天
去签到