欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数据分析打卡01

程序员文章站 2024-03-07 18:26:09
...

数据载入及初步观察

以泰坦尼克号数据集为例
1、导入数据集
对于csv文件可以采用pd.read_csv()的方式,加载的时候需要加上文件的路径

#加载所需的库
import numpy as np
import pandas as pd
#载入之前保存的train_chinese.csv数据,关于泰坦尼克号的任务,我们就使用这个数据
text = pd.read_csv('train_chinese.csv')
text.head()   #查看数据形式,一般默认为前5个

数据集共有12列,目标变量Survived表示的是该乘客是否获救,1表示获救,0表示未获救。其余都是乘客的个人信息,包括:

PassengerId => 乘客ID
Pclass => 乘客等级(1/2/3等舱位)
Name => 乘客姓名
Sex => 性别
Age => 年龄
SibSp => 堂兄弟/妹个数
Parch => 父母与小孩个数
Ticket => 船票信息
Fare => 票价
Cabin => 客舱
Embarked => 登船港口(C/Q/S港口)
2、了解和分析数据
pandas对数据进行分析

pd.DataFrame() :创建一个DataFrame对象
np.arange(8).reshape((2, 4)) : 生成一个二维数组(2*4),第一列:0,1,2,3 第二列:4,5,6,7
index=['2, 1] :DataFrame 对象的索引列
columns=['d', 'a', 'b', 'c'] :DataFrame 对象的索引行

利用Pandas对示例数据进行排序,要求升序

#自己构建一个都为数字的DataFrame数据,并按照升序的方式进行排列
frame = pd.DataFrame(np.arange(8).reshape((2, 4)), 
 index=['2', '1'], 
 columns=['d', 'a', 'b', 'c'])
frame.sort_values(by='c', ascending=False)

注:sort_values这个函数中by参数指向要排列的列,ascending参数指向排序的方式(升序还是降序)
排序方式总结:

# 让行索引升序排序
frame.sort_index()

# 让列索引升序排序
frame.sort_index(axis=1)

# 让列索引降序排序
frame.sort_index(axis=1, ascending=False)

# 让任选两列数据同时降序排序
frame.sort_values(by=['a', 'c'])

对泰坦尼克号数据按票价和年龄两列进 行综合排序(降序排列)

text.sort_values(by=['票价', '年龄'], ascending=False).head(3)

数据分析打卡01
2.1数据的描述性分析

#统计每一列的均值、最大值、最小值、分位数等
text.describe()

2.2变量分布统计

#1.获救情况分布,共891位乘客,仅有300多位乘客幸免于难,占比38%
text['Survived'].value_counts().plot(kind='bar',color='yellow',title='Rescue situation', rot=360)

数据分析打卡01
利用Pandas进行算术计算,计算两个DataFrame数 据相加结果

#建立一个例子
frame1_a = pd.DataFrame(np.arange(9.).reshape(3, 3),
 columns=['a', 'b', 'c'],
 index=['one', 'two', 'three'])
frame1_b = pd.DataFrame(np.arange(12.).reshape(4, 3),
 columns=['a', 'e', 'c'],
 index=['first', 'one', 'two', 'second'])
frame1_a

数据分析打卡01
数据分析打卡01

#将frame_a和frame_b进行相加
frame1_a + frame1_b

数据分析打卡01
两个DataFrame相加后,会返回一个新的DataFrame,对应的行和列的值会相加,没有对应的会变成空值
NaN。
计算出在船上最大的家族有 多少人

max(text['兄弟姐妹个数'] + text['父母子女个数'])
10

3、探索变量之间的关系
《Titanic》影片中女士与孩子、社会地位较高者优先得到了救助。
这表明Age,Sex和PClass可能是影响生存的关键因素,那么我们将通过图表来展现Sex和Pclass分别与Survived的关系。

text[['Sex','Survived']].groupby(['Sex'],as_index=False).mean().sort_values(by='Survived',ascending=False)

数据分析打卡01
以透视表的形式展示

sex_pivot = text.pivot_table(index="Sex",values="Survived")
sex_pivot

import matplotlib.pyplot as plt

#构造Sex与Survived均值的条形图
sex_pivot.plot.bar(rot=360)
plt.show()

数据分析打卡01
女性的幸存比例明显高于男性

pandas基础

1、查看DataFrame数据的每列的项

df.columns
Index(['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp', 'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked'],
 dtype='object')

2、查看"cabin"这列的所有项[有多种方法]

df['Cabin'].head(3)
df.Cabin.head(3)

数据分析打卡01
3、删除多余的列

# 删除多余的列
del test_1['a']
test_1.head(3)

4、将[‘PassengerId’,‘Name’,‘Age’,‘Ticket’]这几个列元 素隐藏,只观察其他几个列元素

df.drop(['PassengerId','Name','Age','Ticket'],axis=1).head(3)

数据分析打卡01
注:如果想要完全的删除你的数据结构,使用inplace=True,因为使用inplace就将原数据覆盖了
5、筛选
(1)以"Age"为筛选条件,显示年龄在10岁以下的乘客信息

df[df["Age"]<10].head(3)

数据分析打卡01
(2)以"Age"为条件,将年龄在10岁以上和50岁以下的乘客信息显示出来,并将这个数据命名为midage

midage = df[(df["Age"]>10)& (df["Age"]<50)]
midage.head(3)

数据分析打卡01
(3)将midage的数据中第100行的"Pclass"和"Sex"的数 据显示出来

midage = midage.reset_index(drop=True)
midage.head(3)
midage.loc[[100],['Pclass','Sex']]

重置索引后,drop参数默认为False,想要删除原先的索引列要置为True.想要在原数据上修改要inplace=True.特别是不赋值的情况必须要加,否则drop无效.
数据分析打卡01
(4)使用loc方法将midage的数据中第100,105,108行 的"Pclass","Name"和"Sex"的数据显示出来

midage.loc[[100,105,108],['Pclass','Name','Sex']]

数据分析打卡01

相关标签: 数据分析