课程现分为三个单元,大致可以分为:数据基础操作,数据清洗与重构,建模和评估。
第一部分:我们获得一个要分析的数据,我要学会如何加载数据,查看数据,然后学习Pandas的一些基础操作,最后开始尝试探索性的数据分析。
import numpy as np
import pandas as pd
# 相对路径
df = pd.read_csv('train.csv')
df.head(3)
# 绝对路径
df = pd.read_csv('/Users/chenandong/Documents/datawhale数据分析每个人题目设计/招募阶段/第一单元项目集合/train.csv')
df.head(3)
每1000行为一个数据模块,逐块读取
chunker = pd.read_csv('train.csv', chunksize=1000)
修改表头
df = pd.read_csv('train.csv', names=['乘客ID','是否幸存','仓位等级','姓名','性别','年龄','兄弟姐妹个数','父母子女个数','船票信息','票价','客舱','登船港口'],index_col='乘客ID',header=0)
df.head()
查看数据基本信息
df.info()
观察数据
# 前十行数据
df.head(10)
# 后15行数据
df.tail(15)
判断数据是否为空,为空的地方返回True,其余地方返回False
df.isnull().head()
保存数据为csv格式
# 注意:不同的操作系统保存下来可能会有乱码。大家可以加入`encoding='GBK' 或者 ’encoding = ’utf-8‘‘`
df.to_csv('train_chinese.csv')
dataframe、series、ndarray。
ndarray
ndarray是Numpy库中的矩阵模块,可以创建n维的数组对象,所有元素必须是相同的类型,比如你的元素是字符,那就全部都是字符。
- 创建
import numpy as np arr=np.array([[1,2,3],[4,5,6],[7,8,9]],dtype=np.int32 ) print(arr)
Series
类似于1维数组,由索引+数值组成
- 创建
import pandas as pd s=pd.Series(['a','b','c','d'])
DataFrame
重磅来了!dataframe是非常常见的一个表格型数据结构,每一列可以是不同的数值类型,有行索引、列索引。提到它就会自然想到Pandas这个包。平常用Python处理xlsx、csv文件,读出来的就是dataframe格式。
- 创建
可以单独创建,也可以由别的类型转换过来:列表、series、字典等等。
import pandas as pd df=pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]],columns=['a','b','c'])
【数据分析入门】之:dataframe和series - 知乎
loc和iloc的区别
loc:works on labels in the index.
iloc:works on the positions in the index (so it only takes integers).也就是说loc是根据index来索引,比如下边的df定义了一个index,那么loc就根据这个index来索引对应的行。iloc并不是根据index来索引,而是根据行号来索引,行号从0开始,逐次加1。
In [1]: df = DataFrame(randn(5,2),index=range(0,10,2),columns=list('AB')) In [2]: df Out[2]: A B 0 1.068932 -0.794307 2 -0.470056 1.192211 4 -0.284561 0.756029 6 1.037563 -0.267820 8 -0.538478 -0.800654 In [5]: df.iloc[[2]] Out[5]: A B 4 -0.284561 0.756029 In [6]: df.loc[[2]] Out[6]: A B 2 -0.470056 1.192211
对数据进行排序(升序)
# 具体请看《利用Python进行数据分析》第五章 排序和排名 部分
#自己构建一个都为数字的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中的数据根据某一列,升序排列
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)