DateWhale数据分析课程组队学习打卡task01

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):
&#x662F;&#x5426;&#x5E78;&#x5B58;      891 non-null int64
&#x4ED3;&#x4F4D;&#x7B49;&#x7EA7;      891 non-null int64
&#x59D3;&#x540D;        891 non-null object
&#x6027;&#x522B;        891 non-null object
&#x5E74;&#x9F84;        714 non-null float64
&#x5144;&#x5F1F;&#x59D0;&#x59B9;&#x4E2A;&#x6570;    891 non-null int64
&#x7236;&#x6BCD;&#x5B50;&#x5973;&#x4E2A;&#x6570;    891 non-null int64
&#x8239;&#x7968;&#x4FE1;&#x606F;      891 non-null object
&#x7968;&#x4EF7;        891 non-null float64
&#x5BA2;&#x8231;        204 non-null object
&#x767B;&#x8239;&#x6E2F;&#x53E3;      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['&#x7968;&#x4EF7;']
data.drop(['&#x7968;&#x4EF7;'],axis=1)
data.drop(['&#x7968;&#x4EF7;'],axis=1,inplace=True)

不加inplace的drop实质上是隐藏了票价这个列,并没有真正的删除,通过inplace=True会直接删除掉原数据里的这一列,就跟del的效果一样了。

3.2 loc和iloc

两者都是Pandas为了获取某一行的数据而用的,两者的区别其实就是loc是根据Index来索引的,而iloc是根据行号来索引的,例如,我原数据的部分数据如下入所示:

DateWhale数据分析课程组队学习打卡task01

当我分别执行下面两段代码过后

print(data.loc[[100,101],['&#x59D3;&#x540D;','&#x6027;&#x522B;','&#x5E74;&#x9F84;']])
print(data.iloc[[100,101],[2,3,4]])

结果为

                           &#x59D3;&#x540D;      &#x6027;&#x522B;    &#x5E74;&#x9F84;
&#x4E58;&#x5BA2;ID
100         Kantor, Mr. Sinai    male  34.0
101   Petranec, Miss. Matilda  female  28.0
                                    &#x59D3;&#x540D;      &#x6027;&#x522B;    &#x5E74;&#x9F84;
&#x4E58;&#x5BA2;ID
101            Petranec, Miss. Matilda  female  28.0
102   Petroff, Mr. Pastcho ("Pentcho")    male   NaN

3.3 其它

另外一个初步观察常常要做的就是缺失值的审查,看看到底哪些列有缺失值,数量是多少

print(data.isnull())
print(data.isnull().sum())
       &#x662F;&#x5426;&#x5E78;&#x5B58;   &#x4ED3;&#x4F4D;&#x7B49;&#x7EA7;     &#x59D3;&#x540D;     &#x6027;&#x522B;     &#x5E74;&#x9F84;  ...  &#x7236;&#x6BCD;&#x5B50;&#x5973;&#x4E2A;&#x6570;   &#x8239;&#x7968;&#x4FE1;&#x606F;     &#x7968;&#x4EF7;     &#x5BA2;&#x8231;   &#x767B;&#x8239;&#x6E2F;&#x53E3;
&#x4E58;&#x5BA2;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
&#x662F;&#x5426;&#x5E78;&#x5B58;        0
&#x4ED3;&#x4F4D;&#x7B49;&#x7EA7;        0
&#x59D3;&#x540D;          0
&#x6027;&#x522B;          0
&#x5E74;&#x9F84;        177
&#x5144;&#x5F1F;&#x59D0;&#x59B9;&#x4E2A;&#x6570;      0
&#x7236;&#x6BCD;&#x5B50;&#x5973;&#x4E2A;&#x6570;      0
&#x8239;&#x7968;&#x4FE1;&#x606F;        0
&#x7968;&#x4EF7;          0
&#x5BA2;&#x8231;        687
&#x767B;&#x8239;&#x6E2F;&#x53E3;        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/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球