泰坦尼克号任务-数据处理和可视化

数据清洗及特征处理

缺失值观察和处理

查看空值个数

data.info()
data.isnull().sum()

缺失值处理

#检索空值
data[data['Age'].isna()] = 0
data[data['Age'].isnull()] = 0 #推荐
data[data['Age'] == None] = 0
data[data['Age'] == np.nan] = 0 #采用比较时候,不要使用none,有的检索不出来
# dropna()函数删除有空值的行和列,,thresh决定空值的个数
DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
df.dropna(how='all') #how决定删除依据是只要有空值还是所有值都为空,all代表都为空才删除
df.dropna(thresh=2)  #删除操作需要达到的空值个数
df.dropna(subset=['name', 'toy'])  #删除 name toy列含有空值的行
# 填充空值
DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None)[source]
df.fillna(method="ffill") # method{‘backfill’, ‘ffill’, None}, default None 向前向后传播临近的非空值
values = {"A": 0, "B": 1, "C": 2, "D": 3}
df.fillna(value=values)   # 使用字典填充指定列的空值
df.fillna(value=values, limit=1) # limit 存在多个空值,决定填充空值的个数
df2 = pd.DataFrame(np.zeros((4, 4)), columns=list("ABCE"))
df.fillna(df2)  #使用dataframe格式填充空值,只有相同列明的空值才会被填充

重复值观察和处理

# duplicated 重复值检测,keep一般保持为默认first,第一次出现的记录为false,第二次及以后出现为ture,返回布尔值的series
duplicated(subset=None, keep='first')[source]
df.duplicated()
df.duplicated(subset=['brand'])# 指定列检测
df.duplicated().sum() #计算重复个数
data[data.duplicated()] #返回重复的数据
#drop_duplicates删除重复行,keep保持默认first,重复值保留第一次出现的记录
DataFrame.drop_duplicates(subset=None, keep='first', inplace=False, ignore_index=False)

特征值观察于处理

连续型变量离散化处理(分箱)

#pd.cut()函数,可以等宽,可以指定区间分割,
pandas.cut(x, bins, right=True, labels=None, precision=3)
data['年龄分组']= pd.cut(data['Age'],5,labels =[1,2,3,4,5])#均分箱成5个年龄段,并分别用类别变量12345表示
pd.cut(data['Age'],[0,5,15,30,50,80],right = False,labels =[1,2,3,4,5]) #划分为[0,5) [5,15) [15,30) [30,50) [50,80)五个年龄段,并分别用类别变量12345表示
#qcut()按频率分
pd.qcut(data['Age'],[0,0.1,0.3,0.5,0.7,0.9],labels =[1,2,3,4,5])# 按10% 30% 50% 70% 90%五个年龄段,并用分类变量12345表示

对文本变量进行转换

#查看文本变量名及种类
data['Sex'].value_counts()# 返回每种名称和数量
data['Sex'].unique() #返回种类名称
data['Sex'].nunique() #只返回种类的数量
#种类较少的可以使用replace map函数进行替换
data['sex_num'] = data['Sex'].map({'male':1,'female':2}) #没有匹配上的会赋值为空
data['sex_num'] = data['Sex'].replace(['male', 'female'],[1,2]) #没有对应的保持原值
#使用sklearn的labelencoder
from sklearn.preprocessing import LabelEncoder
data['Cabin'] = LabelEncoder().fit_transform(data['Cabin'])
#onehot编码
x = pd.get_dummies(data['Embarked'], prefix='Embarked') # prefix 前缀
data = pd.concat([data,x],axis =1)# 编码后的和源数据按照列拼接

数据重构1

数据链接

# 默认纵向连接行,axis=1 则横向链接列
result_up = pd.concat(list_up,axis=1)
#横向链接列
resul_up = text_left_up.join(text_right_up)
result_up = pd.merge(text_left_up,text_right_up,left_index=True,right_index=True)  #要有共同列或者使用索引left—_index =true;默认内连接
#纵向链接行
result = resul_up.append(result_down)

数据重构

#吧dataframe格式数据转为series类型 level 控制列轴到行显示的索引级别
DataFrame.stack(level=- 1, dropna=True)[source]

聚合函数

# data数据按照性别聚合,分别计算票价均值和仓位总和
data.groupby('Sex').agg({'Fare': 'mean', 'Pclass': 'count'}).rename(columns=
                            {'Fare': 'mean_fare', 'Pclass': 'count_pclass'})
data['Survived'].groupby(data['Sex']).sum()

数据可视化

pandas.DataFrame.plot()

import matplotlib.pyplot as plt
#柱状图
survived.plot.bar()
data.groupby(by = ['Pclass'])['Survived'].value_counts().unstack().plot(kind='bar',stacked = 'true')
#折线图
far=data.groupby(by = ['Fare'])['Survived'].value_counts().sort_values(ascending=False)
fig = plt.figure(figsize=(20, 20))
far.plot(grid= 'Ture')
plt.legend()
plt.show()
#直方图
data.Age[data['Survived'] == 0].hist(bins =5,alpha = 0.5)
data.Age[data['Survived'] == 1].hist(bins =5,alpha = 0.5)
plt.legend((0,1))
plt.xlabel('age')
plt.ylabel('count')
#密度分布图
data.Age[data['Survived'] == 0].plot.density()
data.Age[data['Survived'] == 1].plot.density()

转载请注明:

作者:vision
文章标题:copilot在Pycharm的应用
文章来源:1:城南花开;2:vision_wang的csdn

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值