数分第一章
关于课程
一个数据分析的课程,主要工具是numpy和pandas,运用这两个包分析数据,最后会通过kaggle上的一个小任务实践一遍学到的技能。
学习过程中的一些疑惑与问题
- 读数据:
使用绝对路径读数据的时候有可能会出问题,如:
’\‘ 在windows系统当中读取文件路径可以使用,但是在python字符串中\有转义的含义,所以这里应该改动为:
在路径前加r,即保持字符原始值的意思。
- 逐块打印
它的本质就是将文本分成若干块,每次处理 chunksize 行的数据,最终返回一个TextParser 对象,对该对象进行迭代遍历,可以完成逐块统计的合并处理。其目的主要是当需要读取的数据较大时,防止内存不够无法读取。
其返回一个可迭代对象TextFileReader。
- 查看结尾数据的函数为:
df.tail()
- 查看数据是否为空的函数为:
df.isnull()
- Series和Dataframe的区别:
网上说Series是一个类似一维数组的东西,但私以为更像是个字典,因为数组只能用数字下表索引,但Series可以以字符为下标索引。
所以这个还是蛮简单的一个数据结构
DataFrame则相对来说复杂一点,是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame既有行索引也有列索引。上文我们曾以dataframe的数据形式读入过文件,如下:
- 查看dataframe列名称的代码:
df.columns
- 查看某一列的元素:
df['列名'] 如:df['Cabin']
也可:df.列名 如:df.Cabin
- 隐藏某几列元素,仅查看剩余列:
df.drop(['列名1','列名2'],axis=1)
#这里使用的drop函数如果改为df.drop(['列名1','列名2'],axis=1,inplace=True)就变成了删除这几列
#了,也就是说inplace默认为false,表示不写回原数据
- 数据筛选:
#只需要写好表达式,如下:
df[df["Age"]<10] #年龄小于10
df[(df["Age"]>10)& (df["Age"]<50)] #年龄大于10小于50
- 对数据排序:
#主要通过df.sort_values()函数
df.sort_values(by='票价') #按票价排序,默认升序
df.sort_values(by='票价',ascending = False) #ascending参数控制升降序,false是降序
#而在我们数据分析的过程中,我们常常需要观察多个因素之间相互作用的关系,如当下的数据:
df.sort_values(by=['票价', '年龄'], ascending=False) #这样即可看出票价与年龄之间一定的关系
text.sort_values(by=['票价', '年龄'], ascending=[False,True]) #若想看两列之间的关系,但一个升序一个降序,可以通过这样写来实现
“当你发现数据之间的关系了,数据分析就开始了”
数据分析或许不仅仅是工具的使用,在进行数据分析的时候我们可能需要更专注于数据之间的关系,不能本末倒置,时刻牢记代码是工具,数据内所蕴含的关系才是我们真正在意的。