数据加载及探索分析

1.数据载入及初步观察

1.1导入numpy和pandas

import pandas as pd
import numpy as np

1.2载入数据

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

df = pd.read_csv('train.csv')
df.head()
#相对路径要让文件处于jupyter的文件目录下
df = pd.read_csv('/Users\Administrator\Desktop\组对学习\hands-on-data-analysis-master\第一单元项目集合/train.csv')
df.head()
#绝对路径只用知道文件位置就好
df=pd.read_table('train.csv',sep=',')
df.head()#这样可让pd.read_csv()和pd.read_table()读取分隔符不一样,sep可让相同显示。

1.3每1000行为一个数据模块,逐块读取

chunker = pd.read_csv('train.csv',chunksize=1000)
for i in chunker:
    print(i)

1.4将表头改成中文,索引改为乘客ID [对于某些英文资料,我们可以通过翻译来更直观的熟悉我们的数据]

df = pd.read_csv('train.csv',names=['乘客ID','是否幸存','乘客等级(1/2/3等舱位)','乘客姓名','性别','年龄','堂兄弟/妹个数','父母与小孩个数','船票信息','票价','客舱','登船港口'],index_col = '乘客ID',header = 0)
df.head()
df = pd.read_csv('train.csv',names=['乘客ID','是否幸存','乘客等级(1/2/3等舱位)','乘客姓名','性别','年龄','堂兄弟/妹个数','父母与小孩个数','船票信息','票价','客舱','登船港口'],index_col = '乘客ID',skiprows=[0] )
df.head()

1.5查看数据的基本信息

df.info()
df.head(10)#前10行
df.tail(15)#后15行
pd.isnull(df).head()#查看缺失值

1.6保存数据

df.to_csv('train_chinese.csv')

2.Pandas基础

2.1pandas中有两个数据类型DateFrame和Series,通过查找简单了解他们。然后自己写一个关于这两个数据类型的小例子

import numpy as np
import pandas as pd
data1 = {'a': 50,'b': 60,'c':70,'d':80}
ep1=pd.Series(data1)
ep1
data2 = {'a':['1','2','3','4'],'b':['5','6','7','8'],'c':['9','10','11','12']}
ep2=pd.DataFrame(data2)
ep2

2.2根据上节课的方法载入"train.csv"文件,查看DataFrame数据的每列的名称

df = pd.read_csv('train.csv')
df.head()
df.columns

2.3查看"Cabin"这列的所有值[有多种方法]

df['Cabin']
df.Cabin

2.4加载文件"test_1.csv",然后对比"train.csv",看看有哪些多出的列,然后将多出的列删除

df1 = pd.read_csv('test_1.csv')
df1.head()
del df1['a']
df1.head()
df1 = pd.read_csv('test_1.csv')
df1.drop('a',axis=1,inplace=True)
df1.head()

2.5将['PassengerId','Name','Age','Ticket']这几个列元素隐藏,只观察其他几个列元素

df.drop(['PassengerId','Name','Age','Ticket'],axis=1)
df.head()
#del 改变原数据
#df1.drop('a',axis=1),不改变原数据,可以重新赋值
#df1.drop('a',axis=1,inplace=True)改变原数据

2.6我们以"Age"为筛选条件,显示年龄在10岁以下的乘客信息

df= df[df['Age']<10]
df.head()

2.7 以"Age"为条件,将年龄在10岁以上和50岁以下的乘客信息显示出来,并将这个数据命名为midage

midage = df[(df['Age']>10)&(df['Age']<50)]
midage.head(3)# | (或) &(且) ,等于必须是==
midage = midage.reset_index(drop=True)
midage.head(3)#reset_index()函数的作用是重置索引,没有索引不了,会出错

2.8将midage的数据中第100行的"Pclass"和"Sex"的数据显示出来;使用loc方法将midage的数据中第100,105,108行的"Pclass","Name"和"Sex"的数据显示出来;使用iloc方法将midage的数据中第100,105,108行的"Pclass","Name"和"Sex"的数据显示出来

midage.loc[[100],['Pclass','Sex']]
midage.loc[[100,105,108],['Pclass','Name','Sex']]
midage.iloc[[100,105,108],[2,3,4]]
#loc通过数据标签来选择,iloc通过整数标签来选择,即0,1,2。

3.数据探索性分析

import numpy as np
import pandas as pd
#载入之前保存的train_chinese.csv数据
df = pd.read_csv('train_chinese.csv')
df.head()

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

df1 = pd.DataFrame(np.arange(10).reshape((2,5)),index=[2,1],columns=['a','c','b','d','f'])
df1
df1.sort_values(by='a')#数据默认升序排列

3.2让行索引升序排序;让列索引升序排序;让列索引降序排序;让任选两列数据同时降序排序

df1.sort_index()
df1.sort_index(axis=1)
df1.sort_index(axis=1,ascending=False)
df1.sort_values(by=['f','a'],ascending=False)

3.3对泰坦尼克号数据(trian.csv)按票价和年龄两列进行综合排序(降序排列),从这个数据中你可以分析出什么?

df= df.sort_values(by=['票价','年龄'],ascending=False)
df.head(20)
df= df.sort_values(by=['乘客等级(1/2/3等舱位)','年龄'],ascending=False)
df.head(30)
df= df.sort_values(by=['乘客等级(1/2/3等舱位)','年龄'])
df.head(30)
#根据仓位等级和年龄降序排序,仓位等级3,30个数据中,存活数只有3人,仓位等级1,存活24人,很大程度和仓位等级有关。

3.4利用Pandas进行算术计算,计算两个DataFrame数据相加结果

framel_a = pd.DataFrame(np.arange(12.).reshape(3,4),columns=['a','b','c','d'],index=['one', 'two', 'three'])
framel_b = pd.DataFrame(np.arange(16.).reshape(4,4),columns=['a','e','c','d'],index=['one', 'two', 'three','four'])
framel_a
framel_b
framel_a+framel_b

3.5通过泰坦尼克号数据如何计算出在船上最大的家族有多少人?

max(df['堂兄弟/妹个数']+df['父母与小孩个数'])
df2=df['堂兄弟/妹个数']+df['父母与小孩个数']
df2.head(20)
df3=df['堂兄弟/妹个数']+df['父母与小孩个数']+df['是否幸存']
df3.head(20)
#根据上述相加,家里人是1的,11个中死2个,家里大于2的9个中死2个,家里人口基数大的存活低。

3.6学会使用Pandas describe()函数查看数据基本统计信息

frame2 = pd.DataFrame([[1,2],[3,np.nan],[np.nan,5]],index=['one','two','thtee'],columns=['a','b'])
frame2.describe()
#count : 样本数据大小
#mean : 样本数据的平均值
#std : 样本数据的标准差
#min : 样本数据的最小值
#25% : 样本数据25%的时候的值
#50% : 样本数据50%的时候的值
#75% : 样本数据75%的时候的值
#max : 样本数据的最大值

3.7分别看看泰坦尼克号数据集中 票价、父母子女 这列数据的基本统计数据,你能发现什么?

df['票价'].describe()
df['父母与小孩个数'].describe()
df['是否幸存'].describe()
#结合票价和存活数,前50%的幸存数是0,而且前面票价都很低,说明票价高低很大影响存活率。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值