task01主要是对数据做一些基本的分析,观察一个整体,用到的python包也不多,只有一个Pandas,导入来用即可。
1.数据读入
首先就是读数据,python读取数据的方式有很多种,因为此次用的是pandas,所以就用pandas里提供的函数来读,首先我们需要看看我们读入的数据存储格式是哪种,是.csv还是txt,亦或者是.tsv,因为本次的数据文件存储形式是.csv文件,所以用pandas的read_csv()函数即可,当然这里面会有很多参数,也支持直接修改原数据的列名,以及选择修改后的索引是哪个等,具体还有哪些参数这里不详细介绍,因为平时对于这个函数的使用中所添加的参数也不外乎上面提到的那些。
import pandas as pd
data = pd.read_csv('train.csv',names=['乘客ID','是否幸存','仓位等级','姓名','性别','年龄','兄弟姐妹个数','父母子女个数','船票信息','票价','客舱','登船港口'],index_col='乘客ID',header=0)
这里提到的还有一种是chunker的形式:
chunker = pd.read_csv('train.csv', chunksize=1000)
这个读取方式就是指每次对train.csv这个数据文件读取总共chunksize大小的记录条数,如果train.csv数据文件总记录条数是1W条,那每次读1K,相当于要读10次,但是每次存储这些数据的数据结构都是DataFrame。
2.数据存储。
Python中pandas支持直接把DataFrame类型的数据转存成csv文件,但是每次经过一系列对数据的操作后,存储数据的数据结构基本上不会再是原来的数据结构,如果想强行转换成DataFrame的话可能转换效果并不一定如预期的那么好,因此存储的话还是建议用文件存储的方式,不一定非要用这个现成的函数。
data.to_csv('HHHH.csv',encoding='utf-8')
3.数据的初步观察
数据需要观察的东西有很多,最初级的肯定就是一个全貌了,列入有哪些特征列啊,数据量多少啊,各个特征列的数据类型是什么样的之类的,这种可以直接通过info属性得到实现:
print(data.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</class>
以及看看某些记录具体是怎么样的,这种可以通过head(n)和tail(n)来实现。head(n)就是看前n条记录,tail(n)就是后n条记录。
3.1 列的处理
如果想要直接得到其列名可以通过columns属性来获得
print(data.columns)
如果想删除某些列,常用的做法有两种,一种是通过del删除指定的列,一种是通过DataFrame的drop属性。
del data['票价']
data.drop(['票价'],axis=1)
data.drop(['票价'],axis=1,inplace=True)
不加inplace的drop实质上是隐藏了票价这个列,并没有真正的删除,通过inplace=True会直接删除掉原数据里的这一列,就跟del的效果一样了。
3.2 loc和iloc
两者都是Pandas为了获取某一行的数据而用的,两者的区别其实就是loc是根据Index来索引的,而iloc是根据行号来索引的,例如,我原数据的部分数据如下入所示:
当我分别执行下面两段代码过后
print(data.loc[[100,101],['姓名','性别','年龄']])
print(data.iloc[[100,101],[2,3,4]])
结果为
姓名 性别 年龄
乘客ID
100 Kantor, Mr. Sinai male 34.0
101 Petranec, Miss. Matilda female 28.0
姓名 性别 年龄
乘客ID
101 Petranec, Miss. Matilda female 28.0
102 Petroff, Mr. Pastcho ("Pentcho") male NaN
3.3 其它
另外一个初步观察常常要做的就是缺失值的审查,看看到底哪些列有缺失值,数量是多少
print(data.isnull())
print(data.isnull().sum())
是否幸存 仓位等级 姓名 性别 年龄 ... 父母子女个数 船票信息 票价 客舱 登船港口
乘客ID ...
1 False False False False False ... False False False True False
2 False False False False False ... False False False False False
3 False False False False False ... False False False True False
4 False False False False False ... False False False False False
5 False False False False False ... False False False True False
6 False False False False True ... False False False True False
7 False False False False False ... False False False False False
8 False False False False False ... False False False True False
9 False False False False False ... False False False True False
10 False False False False False ... False False False True False
11 False False False False False ... False False False False False
12 False False False False False ... False False False False False
13 False False False False False ... False False False True False
14 False False False False False ... False False False True False
15 False False False False False ... False False False True False
16 False False False False False ... False False False True False
17 False False False False False ... False False False True False
18 False False False False True ... False False False True False
19 False False False False False ... False False False True False
20 False False False False True ... False False False True False
21 False False False False False ... False False False True False
22 False False False False False ... False False False False False
23 False False False False False ... False False False True False
24 False False False False False ... False False False False False
25 False False False False False ... False False False True False
26 False False False False False ... False False False True False
27 False False False False True ... False False False True False
28 False False False False False ... False False False False False
29 False False False False True ... False False False True False
30 False False False False True ... False False False True False
是否幸存 0
仓位等级 0
姓名 0
性别 0
年龄 177
兄弟姐妹个数 0
父母子女个数 0
船票信息 0
票价 0
客舱 687
登船港口 2
dtype: int64
后面跟的sum()就相当于一个总结,如图所示我们可以看到年龄这个特征列共缺失了177个,客舱687最多,登船港口最少2个。除了缺失值的审查,我们也可以同时把无穷值审查了。但是这需要用到numpy这个包。
Original: https://blog.csdn.net/amazing_JQ_wang/article/details/117911560
Author: amazing_JQ_wang
Title: DateWhale数据分析课程组队学习打卡task01
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/674693/
转载文章受原作者版权保护。转载请注明原作者出处!