动手学数据分析学习报告task1

动手学数据分析学习报告task1

1 第一章:数据载入及初步观察

1.1 载入数据

1.1.1 任务一:导入numpy和pandas

import numpy as np
import pandas as pd
import os

1.1.2 任务二:载入数据

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

os.getcwd()
pd.read_csv('../data/train.csv')                                                       #相对路径
TrainSet=pd.read_csv('D:/Python_programme/HandOndataAnalysis/titanic/data/train.csv')  #绝对路径
TrainSet.head()
#pd.read_table('D:/Python_programme/HandOndataAnalysis/titanic/data/train.csv').head()

输出结果
在这里插入图片描述

1.1.3 任务三:每1000行为一个数据模块,逐块读取

ChunkerTrainSet=pd.read_csv('../data/train.csv',chunksize=1000)
print(type(ChunkerTrainSet))
ChunkerTrainSet.get_chunk()

在这里插入图片描述

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

TrainSet.columns=['乘客ID','是否幸存','乘客等级(1/2/3等舱位)','乘客姓名','性别','年龄','堂兄弟/妹个数','父母与小孩个数','船票信息','票价','客舱','登船港口']  #直接在原数据上修改
#TrainSet.rename(columns={"PassengerId":"乘客ID", "Survived":"是否幸存", "Pclass":"乘客等级(1/2/3等舱位)", "Name":"乘客姓名", "Sex":"性别", "Age":"年龄", "SibSp":"堂兄弟/妹个数", "Parch":"父母与小孩个数", "Ticket":"船票信息", "Fare":"票价", "Cabin":"客舱", "Embarked":"登船港口"},inplace=True)#在原表上修改
TrainSet.set_index('乘客ID',inplace=True)
TrainSet

在这里插入图片描述

1.2 初步观察

1.2.1 任务一:查看数据的基本信息

TrainSet.info()
TrainSet.describe()

在这里插入图片描述

1.2.2 任务二:观察表格前10行的数据和后15行的数据

TrainSet.head(11) #前10行数据

在这里插入图片描述

TrainSet.tail(15) #后15行数据

在这里插入图片描述

1.2.4 任务三:判断数据是否为空,为空的地方返回True,其余地方返回False

TrainSet.isnull()

在这里插入图片描述

1.3 保存数据

1.3.1 任务一:将你加载并做出改变的数据,在工作目录下保存为一个新文件train_chinese.csv

TrainSet.to_csv("train_chinese.csv",encoding = 'utf-8')

1.4 知道你的数据叫什么

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

'''
DateFrame
基础构造函数
pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)
data:ndarray、list 或dict
index:行索引
columns:列名列表
dtype:数据类型,默认值是None,推断(infer)列的数据类型,也可以为列指定具体的数据类型。
copy:从数据输入复制数据
'''
#1.使用字典来创建数据框
DicData = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'],'year': [2000, 2001, 2002, 2001, 2002],'pop': [1.5, 1.7, 3.6, 2.4, 2.9]}
row_index = ['one', 'two', 'three', 'four', 'five']
col_names=['year', 'state', 'pop']
df1=pd.DataFrame(data=DicData,index=row_index,columns=col_names)
print(df1)
#2.使用列表(列表项是List)来创建数据框
ListData = [ ['jack', 34, 'Sydeny'] ,
             ['Riti', 30, 'Delhi' ] ,
             ['Aadi', 16, 'New York'] ]
df2=pd.DataFrame(data=ListData)
print(df2)
#3.使用列表(列表项是元组)来创建数据框
TupleData = [ ('jack', 34, 'Sydeny') ,
              ('Riti', 30, 'Delhi' ) ,
              ('Aadi', 16, 'New York') ]
df3 = pd.DataFrame(data=TupleData)
print(df3)
#4.使用from_dict创建数据框
#在data参数中指定列名:
FdicData = {'col_1': [3, 2, 1, 0], 'col_2': ['a', 'b', 'c', 'd']}
df4 = pd.DataFrame.from_dict(data=FdicData)
print(df4)

在这里插入图片描述

'''
Series(系列)
Series 是带标签的一维数组,可存储整数、浮点数、字符串、Python 对象等类型的数据。轴标签统称为索引,它由两部分组成。
values:一组数据(ndarray类型)
index:相关的数据索引标签
基础构造函数
pandas.Series(data=None, index=None, dtype=None, name=None, copy=False)
data:一组数据(ndarray 类型)。
index:数据索引标签,如果不指定,默认从 0 开始。
dtype:数据类型,默认会自己判断。
name:设置名称。
copy:拷贝数据,默认为 False。
'''
#1.使用列表创建系列
SListData = [1,3,5,6,10,23]
S1 = pd.Series(data=SListData)
print(S1)
#2.使用numpy创建系列
S2 = pd.Series(np.random.randint(1,10,size=(3,)),index=['a','b','c'])
print(S2)
#3.使用字典创建系列
SDicData = {"A":1,"B":2,"C":3,"D":2}
S3 = pd.Series(data=SDicData)
print(S3)

在这里插入图片描述

1.4.2 任务二:根据上节课的方法载入"train.csv"文件

TrainDataSet = pd.read_csv('../data/train.csv')

1.4.3 任务三:查看DataFrame数据的每列的名称

#方法1 通过columns字段获取,返回一个numpy型的array
print(TrainDataSet.columns.values)
#方法2 直接使用 list 关键字,返回一个list
print(list(TrainDataSet))
#方法3 链表推倒式
print([column for column in TrainDataSet])

在这里插入图片描述

1.4.4任务四:查看"Cabin"这列的所有值[有多种方法]

#方法1 loc方法
#loc方法是通过行、列的名称或者标签来寻找我们需要的值
print(TrainDataSet.loc[ : ,"Cabin"])
#方法2 iloc方法
#iloc方法是通过索引行、列的索引位置[index, columns]来寻找值
print(TrainDataSet.iloc[:, 10])

在这里插入图片描述

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

TestData = pd.read_csv('../data/test_1.csv')
print(TestData.head())
#del TestData['a']
#print(TestData.head())

在这里插入图片描述
【思考】还有其他的删除多余的列的方式吗?

TestData=TestData.drop(['a'],axis=1)
print(TestData.head())

在这里插入图片描述

1.4.6 任务六: 将[‘PassengerId’,‘Name’,‘Age’,‘Ticket’]这几个列元素隐藏,只观察其他几个列元素

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

TrainDataSet.head()

在这里插入图片描述

1.5 筛选的逻辑

1.5.1 任务一: 我们以"Age"为筛选条件,显示年龄在10岁以下的乘客信息。

TrainDataSet[TrainDataSet["Age"]<10].head()

在这里插入图片描述

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

midage=TrainDataSet[(TrainDataSet["Age"]>10) & (TrainDataSet['Age']<50)]
midage

在这里插入图片描述

1.5.3 任务三:将midage的数据中第100行的"Pclass"和"Sex"的数据显示出来

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

在这里插入图片描述

1.5.4 任务四:使用loc方法将midage的数据中第100,105,108行的"Pclass","Name"和"Sex"的数据显示出来

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

在这里插入图片描述

1.5.5 任务五:使用iloc方法将midage的数据中第100,105,108行的"Pclass","Name"和"Sex"的数据显示出来

midage.iloc[[100,105,108],[2,3,4]]

在这里插入图片描述

1.6 了解你的数据吗?

1.6.1 任务一:利用Pandas对示例数据进行排序,要求升序

TrainDataSet = pd.read_csv('train_chinese.csv')
TrainDataSet.sort_values('年龄',ascending=True)#按年龄升序排列

在这里插入图片描述

1.6.2 任务二:对泰坦尼克号数据(trian.csv)按票价和年龄两列进行综合排序(降序排列),从数据中你能发现什么

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

1.6.3 任务三:利用Pandas进行算术计算,计算两个DataFrame数据相加结果

frame1 = pd.DataFrame(np.arange(9.).reshape(3, 3),
                     columns=['a', 'b', 'c'],
                     index=['one', 'two', 'three'])
frame2 = pd.DataFrame(np.arange(12.).reshape(4, 3),
                     columns=['a', 'e', 'c'],
                     index=['first', 'one', 'two', 'second'])
frame1
frame2
frame1+frame2

在这里插入图片描述

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

max(TrainDataSet['堂兄弟/妹个数'] + TrainDataSet['父母与小孩个数'])

10

1.6.5 任务五:学会使用Pandas describe()函数查看数据基本统计信息

TrainDataSet

在这里插入图片描述

TrainDataSet.describe()

在这里插入图片描述

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

1.票价的分布范围非常广,跨度非常大。
2.大部分人是独自一人上船的

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值