数据分析 Part 2 | Datawhale
2020-08-21 15:10
16 查看
一切尽在代码之中
我们拿到的数据通常是不干净的,
所谓的不干净,就是数据中有缺失值,有一些异常点等,
需要经过一定的处理才能继续做后面的分析或建模,
所以拿到数据的第一步是进行数据清洗
# 加载所需的库 import numpy as np import pandas as pd from matplotlib import pyplot as plt # 核心代码,设置显示的最大列、宽等参数,消掉打印不完全中间的省略号 pd.set_option('display.max_columns', 1000) pd.set_option('display.width', 1000) pd.set_option('display.max_colwidth', 1000) # 加载数据集 df = pd.read_csv(r'D:\WIN10桌面文件\titanic\train.csv') # df_3=df.head(3) # print(df_3) ''' 我们拿到的数据通常是不干净的, 所谓的不干净,就是数据中有缺失值,有一些异常点等, 需要经过一定的处理才能继续做后面的分析或建模, 所以拿到数据的第一步是进行数据清洗 ''' # 缺失值的观察与处理 # 1、缺失值观察 # df.info() # 方法一 # df_n=df.isnull().sum() # 方法二 # print(df_n) # 2 查看列的数据 # df_10=df[['Age','Cabin','Embarked']].head(10) # print(df_10) # 对缺失值进行处理 # df_chuli=df.dropna().head(10) # print(df_chuli) # df_chuli_2=df.fillna(0).head() # print(df_chuli_2) # df[df['Age']==None]=0 # print(df.head()) ''' 思考:dropna和fillna有哪些参数,分别如何使用呢? ''' # 请查看数据中的重复值 # df_check=df[df.duplicated()] # print(df_check) # 重复值进行处理 # df=df.drop_duplicates().head() # print(df) # 保存处理过的数据 # df.to_csv('test_clear.csv') # 对年龄进行分箱(离散化)处理 # 将连续变量Age平均分箱成5个年龄段,并分别用类别变量12345表示 # df['AgeBand'] = pd.cut(df['Age'], 5, labels=['1', '2', '3', '4', '5']) # print(df.head()) # df.to_csv('test_ave.csv') # 将连续变量Age划分为[0,5) [5,15) [15,30) [30,50) [50,80)五个年龄段,并分别用类别变量12345表示 # df['AgeBand'] = pd.cut(df['Age'],[0,5,15,30,50,80],labels=['1','2','3','4','5']) # print(df.head()) # df.to_csv('test_cut.csv') # 将连续变量Age按10% 30% 50 70% 90%五个年龄段,并用分类变量12345表示 # df['AgeBand'] = pd.qcut(df['Age'],[0,0.1,0.3,0.5,0.7,0.9],labels=['1','2','3','4','5']) # print(df.head()) # df.to_csv('test_pr.csv') # 对文本变量进行转换 # 查看类别文本变量名及种类 # 方法一: value_counts # print(df['Sex'].value_counts()) # print(df['Cabin'].value_counts()) # print( df['Embarked'].value_counts()) # 方法二: unique # print(df['Sex'].nunique()) # print(df['Sex'].unique()) # 将类别文本转换为12345 # 方法一: replace # df['Sex_num'] = df['Sex'].replace(['male','female'],[1,2]) # print(df.head()) # 方法二: map # df['Sex_num']=df['Sex'].map({'male':1,'female':2}) # print(df.head()) # 方法三: 使用sklearn.preprocessing的LabelEncoder from sklearn.preprocessing import LabelEncoder # for feat in ['Cabin','Ticket']: # lbl = LabelEncoder() # label_dict = dict(zip(df[feat].unique(),range(df[feat].nunique()))) # df[feat + "_labelEncode"] = df[feat].map(label_dict) # df[feat + "_labelEncode"] = lbl.fit_transform(df[feat].astype(str)) # print(df.head()) # 将类别文本转换为one-hot编码 # 方法一: OneHotEncoder # for feat in ["Age", "Embarked"]: # # x = pd.get_dummies(df["Age"] // 6) # # x = pd.get_dummies(pd.cut(df['Age'],5)) # x = pd.get_dummies(df[feat], prefix=feat) # df = pd.concat([df, x], axis=1) # # df[feat] = pd.get_dummies(df[feat], prefix=feat) # print(df.head()) # 从纯文本Name特征里提取出Titles的特征 (所谓的Titles就是Mr,Miss,Mrs等) # df['Titile']= df.Name.str.extract('([A-Za-z]+)\.',expand=False) # print(df.head()) # df = df['Fare'].groupby(df['Sex']) # means = df.mean() # print(means) # # survived_sex = df['Survived'].groupby(df['Sex']).sum() # print(survived_sex.head()) text = pd.read_csv(r"D:\WIN10桌面文件\titanic\train.csv") # 可视化展示泰坦尼克号数据集中男女中生存人数分布 情况(用柱状图试试)。 # sex = text.groupby('Sex')['Survived'].sum() # sex.plot.bar() # plt.title('survived_count') # plt.show() # text.groupby(['Sex','Survived'])['Survived'].count().unstack().plot(kind='bar',stacked='True') # plt.title("survived_count") # plt.ylabel('count') # plt.show() # 计算不同票价中生存与死亡人数 1表示生存,0表示死亡 fare_sur = text.groupby(['Fare'])['Survived'].value_counts().sort_values(ascending=False) # print(fare_sur) # 排序后绘折线图 # fig = plt.figure(figsize=(20,18)) # fare_sur.plot(grid = True) # plt.legend() # plt.show() # pclass_sur = text.groupby(['Pclass'])['Survived'].value_counts() import seaborn as sns # sns.countplot(x='Pclass',hue='Survived',data=text) # plt.show() # facet = sns.FacetGrid(text,hue='Survived',aspect=3) # facet.map(sns.kdeplot,'Age',shade=True) # facet.set(xlim=(0,text['Age'].max())) # facet.add_legend() # plt.show() text.Age[text.Pclass == 1].plot(kind='kde') text.Age[text.Pclass == 2].plot(kind='kde') text.Age[text.Pclass == 3].plot(kind='kde') plt.xlabel("age") plt.legend((1,2,3),loc="best") plt.show()
相关文章推荐
- datawhale课程[动手学数据分析]——Task05:模型搭建与评价
- Python股市数据分析教程——学会它,或可以实现半“智能”炒股 (Part 1)
- (4篇长图带你学会数据预处理)数据分析入门_PART4统计基础_CH08异常值处理
- Datawhale零基础入门NLP赛事-02数据读取与数据分析
- datawhale课程[动手学数据分析]——Task01:数据加载及探索性数据分析
- datawhale课程[动手学数据分析]——Task03:数据重构
- Datawhale数据分析课程第三章建模与评估
- Python股市数据分析教程——学会它,或可以实现半“智能”炒股 (Part 2)
- (4篇长图带你学会数据预处理)数据分析入门_PART4统计基础_CH10连续数据离散化
- (4篇长图带你机器学习入门)数据分析入门_PART4统计基础_CH011 一元多元线性回归
- DataWhale 零基础入门NLP赛事-新闻文本分类 TASK2 数据读取与数据分析
- (六篇长图带你数据特征分析入门)数据分析入门_PART4统计基础_CH01数据分布分析
- (4篇长图带你机器学习入门)数据分析入门_PART4统计基础_CH012 KNN最邻近分类
- (六篇长图带你数据特征分析入门)数据分析入门_PART4统计基础_CH02数据对比分析
- (4篇长图带你机器学习入门)数据分析入门_PART4统计基础_CH014蒙特卡罗模拟
- 简要分析JM8.6代码中foreman_part_qcif.yuv文件的YUV数据如何悄无声息地进入程序
- (六篇长图带你数据特征分析入门)数据分析入门_PART4统计基础_CH03数据常用统计指标
- 数据分析(入门篇)-第二章-玩转数据分析-Part4(Excel数据分析工具库-抽样分析)
- DataWhale数据挖掘学习--Task 2 数据分析
- (六篇长图带你数据特征分析入门)数据分析入门_PART4统计基础_CH04帕累托分析