欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

使用R语言进行DW检验的步骤与方法

最编程 2024-01-24 13:59:03
...



DW数据加载及探索性数据分析)

  • 1 数据载入及初步观察
  • 1.1 载入数据
  • 1.2 初步观察
  • 1.3 保存数据
  • 1.4 数据查看与删除
  • 1.5 筛选的逻辑
  • 2 探索性数据分析
  • 1.6 数据的排序、计算与描述


1 数据载入及初步观察

通过数据分析的实战教学,完成kaggle上泰坦尼克的任务,实战数据分析全流程。

1.1 载入数据

1.1.2 任务二:载入数据
(1) 使用相对路径载入数据
(2) 使用绝对路径载入数据

df=pd.read_csv("train.csv")
df.head()
df1 = pd.read_csv("C:/Users/lenovo/Desktop/DW/hands-on-data-analysis-master/titanic/train.csv")
 #要么路径中都是英文名
 #要么路径后加上engine='python'
 #df1 = pd.read_csv("C:/Users/lenovo/Desktop/DW/hands-on-data-analysis-master/第一单元项目集合/train.csv",engine='python')
df1.head()

【思考】知道数据加载的方法后,试试pd.read_csv()和pd.read_table()的不同,如果想让他们效果一样,需要怎么做?了解一下’.tsv’和’.csv’的不同,如何加载这两个数据集?

table默认分隔符为制表符(’\t’)
让table 和 csv 效果一样加上 sep=’,’

df1 = pd.read_table("C:/Users/lenovo/Desktop/DW/hands-on-data-analysis-master/第一单元项目集合/train.csv",sep=',',engine='python')
df1.head()

【总结】加载的数据是所有工作的第一步,我们的工作会接触到不同的数据格式(eg:.csv;.tsv;.xlsx),但是加载的方法和思路都是一样的,在以后工作和做项目的过程中,遇到之前没有碰到的问题,要多多查资料吗,使用google,了解业务逻辑,明白输入和输出是什么。

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

chunker = pd.read_csv('train.csv', chunksize=1000)

【思考】什么是逐块读取?为什么要逐块读取呢?

有chunksize参数可以进行逐块加载,它的本质就是将文本分成若干块
for chunk in chunker

1.1.4 任务四:将表头改成中文,索引改为乘客ID

df = pd.read_csv('train.csv',names=['乘客ID','是否幸存','仓位等级','姓名','性别','年龄','兄弟姐妹个数','父母子女个数',
                                     '船票信息','票价','客舱','登船港口'],
                 index_col='乘客ID',header=0)
#header=0将第一行数据作为列名然后又被重命名names覆盖了,也可先读取后改名
df.head()



是否幸存

仓位等级

姓名

性别

年龄

兄弟姐妹个数

父母子女个数

船票信息

票价

客舱

登船港口

乘客ID

1

0

3

Braund, Mr. Owen Harris

male

22.0

1

0

A/5 21171

7.2500

NaN

S

2

1

1

Cumings, Mrs. John Bradley (Florence Briggs Th...

female

38.0

1

0

PC 17599

71.2833

C85

C

3

1

3

Heikkinen, Miss. Laina

female

26.0

0

0

STON/O2. 3101282

7.9250

NaN

S

4

1

1

Futrelle, Mrs. Jacques Heath (Lily May Peel)

female

35.0

1

0

113803

53.1000

C123

S

5

0

3

Allen, Mr. William Henry

male

35.0

0

0

373450

8.0500

NaN

S

【思考】所谓将表头改为中文其中一个思路是:将英文额度表头替换成中文。还有其他的方法吗?

# df = pd.read_csv('train.csv') 
# df.columns = ['乘客ID','是否幸存','仓位等级','姓名','性别','年龄','兄弟姐妹个数','父母子女个数',
#                                      '船票信息','票价','客舱','登船港口']
# df.head()

1.2 初步观察

导入数据后,你可能要对数据的整体结构和样例进行概览,比如说,数据大小、有多少列,各列都是什么格式的,是否包含null等

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

df.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 891 entries, 1 to 891
Data columns (total 11 columns):
是否幸存      891 non-null int64
仓位等级      891 non-null int64
姓名        891 non-null object
性别        891 non-null object
年龄        714 non-null float64
兄弟姐妹个数    891 non-null int64
父母子女个数    891 non-null int64
船票信息      891 non-null object
票价        891 non-null float64
客舱        204 non-null object
登船港口      889 non-null object
dtypes: float64(2), int64(4), object(5)
memory usage: 83.5+ KB
df.describe()

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

df.head(10)
df.tail(15)

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

df.isnull()

1.3 保存数据

df.to_csv('train_chinese.csv')

1.4 数据查看与删除

查看DataFrame数据的每列的项

df.columns
Index(['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp',
       'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked'],
      dtype='object')

查看"cabin"这列的所有项 [有多种方法]

df["Cabin"].head()
df.Cabin.head()
0     NaN
1     C85
2     NaN
3    C123
4     NaN
Name: Cabin, dtype: object

删除多余的列的方式

del df1['a'] #永久删除
df1.head()
"""drop方法的用法:drop(labels, axis=0, level=None, inplace=False, errors='raise')
       --  axis为0时表示删除行,axis为1时表示删除列 默认为按行
       inplace 接收逻辑型boolean代表操作是否对原数据生效,默认为False
       labels代表删除行或列的标签"""
df1.drop('a',axis=1).head()

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

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



Survived

Pclass

Sex

SibSp

Parch

Fare

Cabin

Embarked

0

0

3

male

1

0

7.2500

NaN

S

1

1

1

female

1

0

71.2833

C85

C

2

1

3

female

0

0

7.9250

NaN

S

【思考】对比任务五和任务六,是不是使用了不一样的方法(函数),如果使用一样的函数如何完成上面的不同的要求呢?

【思考回答】

如果想要完全的删除你的数据结构,使用inplace=True,因为使用inplace就将原数据覆盖了,所以这里没有用

df.head()



PassengerId

Survived

Pclass

Name

Sex

Age

SibSp

Parch

Ticket

Fare

Cabin

Embarked

0

1

0

3

Braund, Mr. Owen Harris

male

22.0

1

0

A/5 21171

7.2500

NaN

S

1

2

1

1

Cumings, Mrs. John Bradley (Florence Briggs Th...

female

38.0

1

0

PC 17599

71.2833

C85

C

2

3

1

3

Heikkinen, Miss. Laina

female

26.0

0

0

STON/O2. 3101282

7.9250

NaN

S

3

4

1

1

Futrelle, Mrs. Jacques Heath (Lily May Peel)

female

35.0

1

0

113803

53.1000

C123

S

4

5

0

3

Allen, Mr. William Henry

male

35.0

0

0

373450

8.0500

NaN

S

1.5 筛选的逻辑

表格数据中,最重要的一个功能就是要具有可筛选的能力,选出我所需要的信息,丢弃无用的信息。

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

midage=df[(df["Age"]>10) & (df["Age"]<50)]
midage.head()

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

midage = midage.reset_index(drop=True) #重置索引
midage.head()



PassengerId

Survived

Pclass

Name

Sex

Age

SibSp

Parch

Ticket

Fare

Cabin

Embarked

0

1

0

3

Braund, Mr. Owen Harris

male

22.0

1

0

A/5 21171

7.2500

NaN

S

1

2

1

1

Cumings, Mrs. John Bradley (Florence Briggs Th...

female

38.0

1

0

PC 17599

71.2833

C85

C

2

3

1

3

Heikkinen, Miss. Laina

female

26.0

0

0

STON/O2. 3101282

7.9250

NaN

S

3

4

1

1

Futrelle, Mrs. Jacques Heath (Lily May Peel)

female

35.0

1

0

113803

53.1000

C123

S

4

5

0

3

Allen, Mr. William Henry

male

35.0

0

0

373450

8.0500

NaN

S

midage.loc[[100],['Pclass','Sex']]



Pclass

Sex

100

2

male

【思考】这个reset_index()函数的作用是什么?如果不用这个函数,下面的任务会出现什么情况?

reset_index()是重置索引,因为前面对数据进行了筛选,所以索引不连续,而drop=True是表示把原来的索引index列去掉,默认 False。

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

loc方法

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

iloc方法

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



Pclass

Name

Sex

100

2

Byles, Rev. Thomas Roussel Davids

male

上一篇: 快速入门 DataWorks:基础操作演示与学习笔记

下一篇: 理解 Durbin-Watson 检验

推荐阅读