数据分析打卡01
数据载入及初步观察
以泰坦尼克号数据集为例
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)
2.1数据的描述性分析
#统计每一列的均值、最大值、最小值、分位数等
text.describe()
2.2变量分布统计
#1.获救情况分布,共891位乘客,仅有300多位乘客幸免于难,占比38%
text['Survived'].value_counts().plot(kind='bar',color='yellow',title='Rescue situation', rot=360)
利用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
#将frame_a和frame_b进行相加
frame1_a + frame1_b
两个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)
以透视表的形式展示
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()
女性的幸存比例明显高于男性
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)
3、删除多余的列
# 删除多余的列
del test_1['a']
test_1.head(3)
4、将[‘PassengerId’,‘Name’,‘Age’,‘Ticket’]这几个列元 素隐藏,只观察其他几个列元素
df.drop(['PassengerId','Name','Age','Ticket'],axis=1).head(3)
注:如果想要完全的删除你的数据结构,使用inplace=True,因为使用inplace就将原数据覆盖了
5、筛选
(1)以"Age"为筛选条件,显示年龄在10岁以下的乘客信息
df[df["Age"]<10].head(3)
(2)以"Age"为条件,将年龄在10岁以上和50岁以下的乘客信息显示出来,并将这个数据命名为midage
midage = df[(df["Age"]>10)& (df["Age"]<50)]
midage.head(3)
(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无效.
(4)使用loc方法将midage的数据中第100,105,108行 的"Pclass","Name"和"Sex"的数据显示出来
midage.loc[[100,105,108],['Pclass','Name','Sex']]
下一篇: 从1到n整数中1出现的次数