动手学数据分析记录

本文首发在知识星球打卡内容上(BrainTechnology星球),此文章中所有链接均通过博客进行访问。

本文学习主要为打卡内容使用,非教程课程。

本学习教程来源:https://gitee.com/datawhalechina/hands-on-data-analysis

本内容任务安排

Task01:数据加载及探索性数据分析(2天)

  • 了解数据加载以及数据观察
  • 掌握pandas基础
  • 完成探索性数据分析

主要学习内容是:课程的第一章123节

Task02:数据清洗及特征处理(2天)

  • 掌握数据清洗的方法
  • 了解特征观察与处理

主要学习内容是:课程的第二章的第1部分(数据清洗及特征处理)

Task03:数据重构(2天)

  • 了解数据重构的方法
  • 使用groupby做数据运算

主要学习内容是:课程的第二章第2、3部分(数据重构)

Task04:数据可视化(2天)

  • 了解可视化的目的
  • 知道各种图形可用于的场景
  • 实战数据可视化的基本库

主要学习内容是:课程的第二章第4部分(数据可视化)

Task05:数据建模及模型评估(2天)

  • 了解数据建模
  • 使用sklearn完成分类模型的建模
  • 了解模型评估
  • 使用sklearn完成模型评估

主要学习内容是:课程的第三章(数据建模及模型评估)

本次学习根据课程大纲安排,将在2021年9月12日-2021年9月22日完成学习

以下内容为打卡学习内容:

首先在学习之前需要一些先前知识,懂一点Python和pandas的使用,可以参考学习辅助资料网址:http://joyfulpandas.datawhale.club/Content/ch1.html

Task 00 安装jupyter和熟悉以上网址

我当前使用的电脑是MacBook Pro ,因此只需要安装好anaconda就会自带Jupyter,在终端中可输入jupyter notebook/jupyter-notebook或者python3 -m IPython notebook即可打开

准备资料内容:图书《Python for Data Analysis》第六章

Task 01 数据加载及探索性数据分析
第一章第一节
#数据集下载https://www.kaggle.com/c/titanic/overview
#第一步导入numpy和pandas
import numpy as np
import pandas as pd

#第二步加载数据
#相对路径
df = pd.read_csv('train.csv')
df.head(3)
#绝对路径
df = pd.read_csv('/Users/chenrui/Desktop/hands-on-data-analysis-master/第一单元项目集合/train.csv')
df.head(3)

#尝试使用os.getcwd()查看当前工作路径时,需要先import os

#第三步逐块读取
chunker = pd.read_csv('train.csv',chunksize = 1000)
#思考:什么是逐块读取?为什么要逐块读取呢?
#设置chunksize参数,来控制每次迭代数据的大小
chunker = pd.read_csv("train.csv",chunksize=1000)
for piece in chunker:
    print(type(piece))
    #<class 'pandas.core.frame.DataFrame'>
    print(len(piece))
    #891

#第四步将表头改成中文
df = pd.read_csv('train.csv', names=['乘客ID','是否幸存','仓位等级','姓名','性别','年龄','兄弟姐妹个数','父母子女个数','船票信息','票价','客舱','登船港口'],index_col='乘客ID',header=0)
df.head()

#查看数据基本信息
df.info()

#查看表格前十行和后15行数据
df.head(10)
df.tail(15)

#判断数据是否为空,判断数据是否为空,为空的地方返回True,其余地方返回False
df.isnull().head()
#思考:对于一个数据,还可以从哪些方面来观察?
df.describe()
#获取每列数据的统计特征
# .describe()即可查看每列数据
'''
(1)总行数统计count
(2)平均值mean
(3)标准差std
(4)最小值min
(5)25%分位值“25%”
(6)50%分位值“50%”
(7)75%分位值“75%”
(8)最大值max
'''

#保存数据
df.to_csv('train_test.csv')

image-20210913111539257

第一章第二节

认识数据,了解数据字段含义

#任务一:pandas中有两个数据类型DateFrame和Series
#series:类似于1维数组,由索引+数值组成
#dataframe是非常常见的一个表格型数据结构,每一列可以是不同的数值类型,有行索引、列索引。提到它就会自然想到Pandas这个包。平常用Python处理xlsx、csv文件,读出来的就是dataframe格式。
#参考链接:https://zhuanlan.zhihu.com/p/41092771

#加载库
import numpy as np
import pandas as pd

#Series的展示
sdata = {'0hio':35000,'Texas':71000,'0regon':16000,'Utah':5000}
example_1 = pd.Series(sdata)
example_1

#DataFrame的展示
data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],
        'year': [2000, 2001, 2002, 2001, 2002, 2003],'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}
example_2 = pd.DataFrame(data)
example_2


#任务二:加载数据集“train.csv”文件
#使用相对路径加载,并展示前三行数据
df = pd.read_csv('train.csv')
df.head(3)

#任务三:查看DataFrame数据的每列名称
df.columns

#任务四:查看“Cabin”这列数据的所有值
df['Cabin'].head(3) #第一种方法读取

df.Cabin.head(3) #第二种方法读取

#任务五:加载数据集“test_1.csv”,对比train.csv,
test_1 = pd.read_csv('test_1.csv')
test_1.head(3)
#删除多余的列
del test_1['a']
test_1.head(3)

#思考:还有其他的删除多余的列的方式吗?
#使用drop方法进行隐藏,加上参数inplace = True,则将原数据覆盖。
#test_1.drop('a',axis = 1,inplace = True)
test_1.drop('a',axis=1,inplace=True)
test_1.head(3)

#任务六:将【“Passengerld”,"Name","Age","Ticket"】这几个元素隐藏
df.drop(['PassengerId','Name','Age','Ticket'],axis = 1).head(3)

#筛选的逻辑,选出所需要信息,舍弃无用信息。
#任务一:以“Age”为筛选条件,显示年龄在10岁以下的乘客信息
df[df["Age"] < 10].head(3)

#任务二: 以"Age"为条件,将年龄在10岁以上和50岁以下的乘客信息显示出来,并将这个数据命名为midage
midage = df[(df["Age"]>10)& (df["Age"]<50)]
midage.head(3)

#任务三:使用reset_index重置索引,显示数据
midage = midage.reset_index(drop=True)
midage.head(3)

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

#任务五:使用iloc方法将midage的数据中第100,105,108行的"Pclass","Name"和"Sex"的数据显示出来
midage.iloc[[100,105,108],[2,3,4]]

#思考:对比iloc和loc的异同
#loc函数主要基于行标签和列标签(x_label、y_label)进行索引:使用loc函数,索引的是字符串。
#iloc函数主要基于行索引和列索引(index,columns) 都是从 0 开始:而且,iloc函数索引的数据是int整型,因此是Python默认的前闭后开。注意只能说int型,也就是数字,输入字符的话是会报错的。

第一章第三节

利用pandas进行排序、计算及描述describe()的使用,本节内容参考《利用Python进行数据分析》第五章

#加载库
import numpy as np
import pandas as pd

#载入之前保存的train_chinese.csv数据,关于泰坦尼克号的任务,我们就使用这个数据
text = pd.read_csv('train_chinese.csv')#相对路径
text.head(3)

#任务一:利用pandas进行数据排序,升序
#构建一个都为数字的DataFrame数据
frame = pd.DataFrame(np.arange(8).reshape((2, 4)), 
                     index=['2', '1'], 
                     columns=['d', 'a', 'b', 'c'])
frame
#代码解析
'''
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 对象的索引行
'''

# 将构建的DataFrame中的数据根据某一列,升序排列,可以看到sort_values这个函数中by参数指向要排列的列,ascending参数指向排序的方式(升序还是降序)
frame.sort_values(by='c', ascending=True)

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

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

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

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

#任务二:对train.csv数据按票价和年龄两列进行降序排列,sort_values这个函数中by参数
text.sort_values(by=['票价', '年龄'], ascending=False).head(3)

#任务三:利用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
frame1_b

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

#任务4:计算train.csv中在船上最大家族有多少人,相加计算个数
max(text['兄弟姐妹个数'] + text['父母子女个数'])

#任务5:学会使用pandas describe()函数查看数据基本统计信息
frame2 = pd.DataFrame([[1.4, np.nan], 
                       [7.1, -4.5],
                       [np.nan, np.nan], 
                       [0.75, -1.3]
                      ], index=['a', 'b', 'c', 'd'], columns=['one', 'two'])
frame2

#使用describe()函数查看基本信息
frame2.describe()
'''
count : 样本数据大小
mean : 样本数据的平均值
std : 样本数据的标准差
min : 样本数据的最小值
25% : 样本数据25%的时候的值
50% : 样本数据50%的时候的值
75% : 样本数据75%的时候的值
max : 样本数据的最大值
'''

#任务6:查看数据中票价、父母子女的基本统计
'''
看看泰坦尼克号数据集中 票价 这列数据的基本统计数据
'''
text['票价'].describe()

text['父母子女个数'].describe()

本章节内容主要介绍了Python中的数据导入库以及pandas中使用内置函数读取数据集,及对数据集的基本信息统计,排序和相加等。

Task02:数据清洗及特征处理(2天)

待学习更新

图片

微信 公众号 B站 知乎 CSDN



谢谢大家观看,如有帮助,来个喜欢或者关注吧!


本文作者:陈锐

博客地址 : Chen Rui Blog

知乎地址 : 知乎专栏

书店地址 : 书店主页
知识星球 : 星球主页

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值