在进行数据分析之前,我们首先需要将数据集导入到python中。
1、先导入需要的包
import pandas as pd
import numpy as np
2、导入数据:数据的格式有多种,如:csv格式,xlsx格式,tsv格式等,都可用pandas中的方法导入。
df=pd.read_csv('F:\Datewheel资料\hands-on-data-analysis-master\hands-on-data-analysis-master\第一单元项目集合/train.csv')
df.head()
3、逐块读取
逐块读取就是将数据分为若干份别读取,在处理数据量大的文件是可能会用到。逐块读取的目的是将只想读取数据的一小部分或者是逐块对数据进行处理。
df1=pd.read_csv('F:\Datewheel资料\hands-on-data-analysis-master\hands-on-data-analysis-master\第一单元项目集合/train.csv',chunksize=1000)
4、将表头改成中文,索引改为乘客ID
#这里需要注意必须有header=0,header=0表示会替换掉原有的列名,否则会影响到下面的判断
df=pd.read_csv('F:\Datewheel资料\hands-on-data-analysis-master\hands-on-data-analysis-master\第一单元项目集合/train.csv',names=['乘客ID','是否幸存','仓位等级','姓名','性别','年龄','堂兄弟/妹个数',' 父母与小孩个数','船票信息','票价','客舱','登船港口'],header=0)
df.head()
1、查看数据的基本信息
df.info() #查看datafram的基本信息
df.describe() #查看datafram的统计信息
df.dtypes #查看列的类型
df.columns #查看列名
#观察表格的前10行数据
df.head(10)
#查看表格的后5行数据
df.tail(5)
2、判断数据是否为空
#判断整个表数据是否为空
df.isnull()
#判断某一列是否为空
df['年龄'].isnull()
初步观察数据时,可以了解数据的一些基本情况,如数据集大小,包含那些特征,可以看下数据每列的类型,及其统计分布等,对后续展开分析有很大帮助。
#pandas中有2种基本的数据类型:DateFrame和Series
ser_data={'zhuobao':1104,'guodong':'1216'}
s=pd.Series(ser_data)
s
dat_data={'name':['zhuobao','guodong'],
'birthsday':[1104,1216]}
d=pd.DataFrame(dat_data)
d
#查看客舱列的所有信息,第一种方法
df['客舱']
#查看客舱列的所有信息,第二种方法
df.客舱
df2=pd.read_csv('F:\Datewheel资料\hands-on-data-analysis-master\hands-on-data-analysis-master\第一单元项目集合/test_1.csv')
df2.head()
#通过观察,发现test_1.csv与train.csv相比,多了一列a,现在要把test_1.csv种的列a删除
#删除列的第一种方式
df2.drop('a',axis=1) #这种方式默认不在原来的表上进行操作,要想直接改变原来的表,需要设置inplace=True(默认为inplace=False),axis=0表示删除行,axis=1表示删除列(默认是axis=0)
#删除列的第二种方式
del df2['a']
df2.head()
将[‘PassengerId’,‘Name’,‘Age’,‘Ticket’]这几个列元素隐藏,只观察其他几个列元素
df2.drop(['PassengerId','Name','Age','Ticket'],axis=1)
#显示出年龄在10岁以下的乘客信息
df[df['Age']<10].head()
#以"Age"为条件,将年龄在10岁以上和50岁以下的乘客信息显示出来,并将这个数据命名为midage
midage=df[(df['Age']>10)&(df['Age']<50)]
midage.head()
midage=midage.reset_index(drop=True) #需要把重置索引后的表赋给midage
midage.head()
通过reset_index()方法我们可以重置索引,drop参数为True时,直接丢弃原来的索引,否则原来的索引新生成一列名为’index’的列。 df.reset_index(inplace=True,drop=True)
#将midage的数据中第100行的"Pclass"和"Sex"的数据显示出来
midage.iloc[[100],[2,4]]
iloc表示位置索引,loc表示标签索引
midage.loc[[100,105,108],['Pclass','Name','Sex']] #这些就是索引为100,105和108的行
midage.iloc[[100,105,108],[2,3,4]]
df_1=pd.read_csv('F:\Datewheel资料\hands-on-data-analysis-master\hands-on-data-analysis-master\第一单元项目集合/train_chinese.csv')
df_1.head(3)
#对泰坦尼克号数据(trian.csv)按票价和年龄两列进行综合排序(降序排列)
df_1.sort_values(by=['票价','年龄'],ascending=False).head()
#计算出在船上最大的家族有多少人
max(df_1['堂兄弟/妹个数']+df_1[' 父母与小孩个数']) #这里需要注意列名中的空格
#分别看看泰坦尼克号数据集中 票价、父母子女 这列数据的基本统计数据
df_1['票价'].describe()
从票价的统计信息可以明显地看出,票价的波动很大,有75%的人票价都在31以下,而最大值都有五百多。
df_1[' 父母与小孩个数'].describe()