datawhale6月组队学习-task01

datawhale6月组队学习-task01

1.数据加载

利用kaggle网站的泰坦尼克号数据集进行学习分析

下载网址: https://www.kaggle.com/c/titanic/overview

# 导入相关库
import numpy as np
import pandas as pd
import os

1.1 加载数据

(1) 使用相对路径载入数据

# 相对路径载入
os.getcwd()  #查看当前工作目录,将数据集复制到这里
train_data = pd.read_csv('train.csv')
train_data.head(5)

datawhale6月组队学习-task01_第1张图片

(2) 使用绝对路径载入数据

# 绝对路径载入
train_data = pd.read_csv(r'F:\jupyter\datawhale_dataAnalysis\train.csv')
train_data.head(5)

加载其他格式的数据集,例如txt,xlsx等可以参考以下链接:

IO tools (text, CSV, HDF5, …) — pandas 1.2.4 documentation (pydata.org)

数据加载-简书

Comparison with SQL — pandas 1.2.4 documentation (pydata.org)

1.2 逐块读取

目的是从超大的数据集中读取电脑内存所能承受大小的数据集

for chunk in chunkers:
    print(chunk)
    print(chunk.shape)
    print(type(chunk))

datawhale6月组队学习-task01_第2张图片

1.3 更改表头

colnames = ['乘客ID','是否幸存','仓位等级','姓名','性别','年龄','兄弟姐妹个数','父母子女个数','船票信息','票价','客舱','登船港口']
# train_data = pd.read_csv('train.csv', names=colnames,header=0)  乘客ID在数据列中
train_data = pd.read_csv('train.csv', names=colnames,header=0,index_col='乘客ID')  
train_data

datawhale6月组队学习-task01_第3张图片

1.4 转换成csv表

train_data.to_csv('train_chinese.csv',encoding='GBK')

2.初步分析

2.1 info()和describe()

train_data.info()
train_data.describe()

2.2 缺失值

# 查看每一列的缺失值个数
train_data.isnull().sum()
# 可视化缺失值
import missingno as msno
msno.matrix(train_data)
msno.bar(train_data)

缺失值处理:删除;填充(线性插值、移动平均、向前/向后、机器学习建模方法)

2.3 异常值

# 画箱线图
import matplotlib.pyplot as plt
import seaborn as sns
plt.figure(figsize=(12,6))
plt.grid(linestyle="--",alpha=0.2)  #加格子线
sns.boxplot(x="Survived", y='Age', data=train_data, showmeans=True)
plt.tight_layout()

(2条消息) pandas数据的异常值判断、可视化以及异常值的处理_梁先森的博客-CSDN博客

异常值处理:用max/min代替

2.4 条件筛选

(1)series和dataframe介绍

https://pandas.pydata.org/pandas-docs/stable/user_guide/dsintro.html

删除一列的方法:del,drop(inplace=True),pop

(2)loc和iloc区别

df.loc[‘label’] = df.iloc[index]

#将midage的数据中第100,105,108行的"Pclass","Name"和"Sex"的数据显示出来
midage.loc[[100,105,108],['Pclass','Name','Sex']]
midage.iloc[[100,105,108],[2,3,4]]
(3)按列筛选
# 以"Age"为条件,将年龄在10岁以上和50岁以下的乘客信息显示出来,并将这个数据命名为midage
# 交集:&;并集:|
midage = train_data[(train_data["Age"]>10)& (train_data["Age"]<50)]
midage
(4)分组筛选

Comparison with SQL — pandas 1.2.4 documentation (pydata.org)

# 例子:数据挖掘hw3
gp = data.groupby(["省份"])["累计确诊人数"].sum().reset_index() # reset_index重置index
gp['累计确诊人数'] = gp['累计确诊人数'].astype('int') #对原始数据进行转换并覆盖原始数据列
gp
tablebar = gp.sort_values(by='累计确诊人数',ascending=False).head(10)
tablebar.index = range(len(tablebar))
tablebar

3.探索性分析

《利用Python进行数据分析》/《Python for Data Analysis》第五章

3.1 排序

(1)按行、列索引
# 行索引(默认升序)
df.sort_index() 
# 列索引(默认升序)
df.sort_index(axis=1)
# 行索引降序
df.sort_index(ascending=False)
(2)按某一列的值
df.sort_values(by=['票价', '年龄'], ascending=False)

可分析票价和存活(存活率)之间的关系,年龄和存活(存活率)之间的关系

3.2 分组分析

# 最大家族有多少人
max(df['兄弟姐妹个数'] + df['父母子女个数'])
df.sort_values(by=['票价', '年龄'], ascending=False)

可分析票价和存活(存活率)之间的关系,年龄和存活(存活率)之间的关系

3.2 分组分析

# 最大家族有多少人
max(df['兄弟姐妹个数'] + df['父母子女个数'])

你可能感兴趣的:(数据分析,python)