数据载入及观察
数据分析
前言
以kaggle中泰坦尼克数据为例,进行分析
一、载入数据
1.1导包
import numpy as np
import pandas as pd
1.2导数据
dt = pd.read_csv('train.csv')
dt.head(5)
1.3逐块导数据
当导入的数据量很大时,pd.read_csv会报错(memory error),这时就需要将数据分为多块导入。例如,每1000行为一块,然后逐块读取。
chunker = pd.read_csv('train.csv', chunksize = 1000)
for chunk in chunker:
print(chunk)
pandas中read_csv里参数chunksize的解释如下:
可以看出这样读取后会返回一个textfilereader对象,类似于迭代器,并不能直接使用。
因此,配合get_chunk函数使用,这时将返回dataframe对象。
print(chunker.get_chunk(5))
1.4代码总结
import numpy as np
import pandas as pd
dt = pd.read_csv('train.csv')
dt.head(5)
chunker = pd.read_csv('train.csv', chunksize = 1000)
for chunk in chunker:
print(chunk)
print(chunker.get_chunk(5))
dt = pd.read_csv('train.csv', names=['乘客ID','是否幸存','乘客等级(1/2/3等舱位)','乘客姓名',
'性别','年龄','堂兄弟/妹个数','父母与小孩个数','船票信息',
'票价','客舱','登船港口'])
dt.head()
二、观察数据
2.1 查看数据的基本信息
大致了解数据集的情况
dt.info()
可以进行这种操作的函数较多,包括但不仅限于以下几种:
dt.info(): # 打印摘要
dt.describe(): # 描述性统计信息
dt.values: # 数据 <ndarray>
dt.to_numpy() # 数据 <ndarray> (推荐)
dt.shape: # 形状 (行数, 列数)
dt.columns: # 列标签 <Index>
dt.columns.values: # 列标签 <ndarray>
dt.index: # 行标签 <Index>
dt.index.values: # 行标签 <ndarray>
dt.head(n): # 前n行
dt.tail(n): # 尾n行
pd.options.display.max_columns=n: # 最多显示n列
pd.options.display.max_rows=n: # 最多显示n行
df.memory_usage(): # 占用内存(字节B)
2.2读入数据
读前五行数据
dt.head(5)
2.3判断数据是否为空
dt.isnull().head()
2.4保存文件
dt.to_csv('train_c.csv')
2.5代码总结
dt.head(5)
dt.isnull().head()
dt.to_csv('train_c.csv')
三、Pandas基础
3.1pandas数据类型
pandas主要有dataframe与series两种基本类型,查看dataframe中每列数据的名称
dt = pd.read_csv('train.csv')
test_1 = pd.rea_csv('test_1.csv')
dt.columns.head(3)
查看target_1的age列中的数据
test_1['Age']
将test_1中的age列删除
test_1.drop(['a'], axis = 1)
3.2pandas筛选
将年龄在10岁以下的乘客信息筛选出来。
dt[dt['Age']<10]
四、探索性数据分析
利用pandas进行排序
text = pd.read_csv('train_chinese.csv')
text.head()
text.sort_values(by=['票价', '年龄'], ascending=False).head(3)
对泰坦尼克数据按票价和年龄进行综合排序,可以发现购买高票价船舱的乘客相对来说年龄在35岁左右,正值壮年。各个年龄段乘客对应的经济条件,也大致符合认知。
计算泰坦尼克号遇难时,最多的家庭成员数量
max(text['兄弟姐妹个数'] + text['父母子女个数'])