第一章:数据载入及初步观察
载入数据
任务一:导入numpy和pandas
|
import numpy as np |
|
import pandas as pd |
任务二:载入数据
|
train_data = pd.read_csv("train.csv") |
|
train_data.head(5) |
|
train_data = pd.read_table("train.csv") |
|
train_data.head(5) |
这两个读取方式的区别在于read_csv读取的是默认分割符为逗号,而read_csv读取默认分隔符为制表符。
任务三:每1000行为一个数据模块,逐块读取
|
chunker = pd.read_csv("train.csv", chunksize = 1000) |
|
print(type(chunker)) |
【思考】什么是逐块读取?为什么要逐块读取呢?
答:比如后续遍历,像一个数据迭代器一样方便读取
【提示】大家可以chunker(数据块)是什么类型?用for
循环打印出来出处具体的样子是什么?
答:<class 'pandas.io.parsers.TextFileReader'>,for遍历每次打印出来1000行
将表头改成中文
|
train_data = pd.read_csv("train.csv", names=['乘客ID','是否幸存','仓位等级','姓名','性别','年龄','兄弟姐妹个数','父母子女个数','船票信息','票价','客舱','登船港口'],index_col='乘客ID', header=0) |
|
train_data.head(5) |
【思考】所谓将表头改为中文其中一个思路是:将英文列名表头替换成中文。还有其他的方法吗?
答:可以读入后再进行修改
初步观察
任务一:查看数据的基本信息
|
<class 'pandas.core.frame.DataFrame'> |
|
Int64Index: 891 entries, 1 to 891 |
|
Data columns (total 11 columns): |
|
# Column Non-Null Count Dtype |
|
--- ------ -------------- ----- |
|
0 是否幸存 891 non-null int64 |
|
1 仓位等级 891 non-null int64 |
|
2 姓名 891 non-null object |
|
3 性别 891 non-null object |
|
4 年龄 714 non-null float64 |
|
5 兄弟姐妹个数 891 non-null int64 |
|
6 父母子女个数 891 non-null int64 |
|
7 船票信息 891 non-null object |
|
8 票价 891 non-null float64 |
|
9 客舱 204 non-null object |
|
10 登船港口 889 non-null object |
|
dtypes: float64(2), int64(4), object(5) |
|
memory usage: 83.5+ KB |
【提示】有多个函数可以这样做,你可以做一下总结
- df.info(): # 打印摘要
- df.describe(): # 描述性统计信息
- df.values: # 数据
- df.to_numpy() # 数据 (推荐)
- df.shape: # 形状 (行数, 列数)
- df.columns: # 列标签
- df.columns.values: # 列标签
- df.index: # 行标签
- df.index.values: # 行标签
- df.head(n): # 前n行
- df.tail(n): # 尾n行
- pd.options.display.max_columns=n: # 最多显示n列
- pd.options.display.max_rows=n: # 最多显示n行
- df.memory_usage(): # 占用内存(字节B)
任务二:观察表格前10行和后15行的数据
|
train_data.head(10) |
|
train_data.tail(15) |
任务三:判断数据是否为空,为空的地方返回true,否则返回false
|
train_data.isnull().head(10) |
【思考】对于一个数据,还可以从哪些方面来观察?找找答案,这个将对下面的数据分析有很大的帮助
答:从分布方面
保存数据
任务一:将你加载并做出改变的数据,在工作目录下保存为一个新文件train_chinese.csv
|
# 注意:不同的操作系统保存下来可能会有乱码。大家可以加入`encoding='GBK' 或者 ’encoding = ’utf-8‘‘` |
|
train_data.to_csv("train_chinese.csv",encoding='GBK') |
知道你的数据叫什么
任务一:pandas中有两个数据类型DateFrame和Series,通过查找简单了解他们。然后自己写一个关于这两个数据类型的小例子
|
myself = {"name":"FavoriteStar",'age':18,"gender":"男性"} |
|
example = pd.Series(myself) |
|
example |
|
myself2 = {"爱好":["打篮球",'唱歌','躺平'], "程度":[100, 90, 80]} |
|
example2 = pd.Series(myself2) |
|
example2 |
|
爱好 [打篮球, 唱歌, 躺平] |
|
程度 [100, 90, 80] |
|
dtype: object |
任务二:根据上节课的方法载入"train.csv"文件
|
train_data = pd.read_csv("train_chinese.csv",encoding='GBK') |
|
# 在保存的时候用了GBK,载入就也要用,否则会乱码 |
任务三:查看DataFrame数据的每列的名称
|
Index(['乘客ID', '是否幸存', '仓位等级', '姓名', '性别', '年龄', '兄弟姐妹个数', '父母子女个数', '船票信息','票价', '客舱', '登船港口'],dtype='object') |
PYTHON 复制 全屏
任务四:查看"Cabin"这列的所有值
|
train_data['客舱'].unique() |
|
train_data.客舱.unique() |
任务五:加载文件"test_1.csv",然后对比"train.csv",看看有哪些多出的列,然后将多出的列删除
|
test_data = pd.read_csv("test_1.csv") |
|
test_data_drop = test_data.drop('a',axis = 1) |
|
test_data.head(5) |
标签:数据,载入数据,数据库,操作系统,GBK,DataFrame,
来源: