动手学数据分析Task01 数据加载及探索性数据分析
作者:互联网
学习目标:
边做边学,完成kaggle上泰坦尼克的任务,实战数据分析全流程。
学习内容:
第一章第一节 数据载入及初步观察
1.1 载入数据
数据集下载 Titanic - Machine Learning from Disaster | Kaggle
import numpy as np
import pandas as pd
# 相对路径载入
df = pd.read_csv('train.csv')
df.head(3)
# 绝对路径载入
df = pd.read_csv('D:hands-on-data-analysis-master/data/Titanic/train.csv')
# 地址变为反斜杠
df.head(3)
将表头改为中文,两种方法:names选项或rename columns
# 将表头改成中文,索引改为乘客ID
# 方法一:
df = pd.read_csv('train.csv', names=['乘客ID', '是否幸存', '舱位等级', '姓名', '性别', \
'年龄', '兄弟姐妹个数', '父母小孩个数', '船票信息', '票价', '客舱', '登船港口'], \
index_col='乘客ID', header=0)
df.head()
# header=0 读取第一行到 DataFrame 的列名,names将之替换;
# header = None第一行不是列名而是内容,列名为names
# 方法二:
# 使用columns更改列名,中文要在前面加u
df.rename(columns = {u"是否幸存": 'Survived'}, inplace=True)
df.head()
# 如果用了inplace=True,再用df=df.rename(),那么右边直接对df进行操作,
# 不是返回dataframe而是返回none,df.head()就会报错,因为nonetype没有head属性
1.2 初步观察
# 【总结】
df.info() # 打印摘要
df.describe() # 描述性统计信息(数值型变量)
df['性别'].value_counts(dropna=False) # 查看某个字段的频数分布,保留nan
df.values # 数据<ndarray>,注意是属性.values,不是方法.values()
df.to_numpy() # 数据<ndarray>
df.shape # 形状 (行数, 列数)
df.columns # 列标签 <Index>
df.columns.values # 列标签 <ndarray>
df.index # 行标签 <Index>
df.index.values # 行标签 <ndarray>,全部列出
df.head(10) # 查看前10行
df.tail(15) # 查看后15行
df.isnull().head()# 判断数据是否为空,空的地方返回True,其余地方返回False
1.3 保存数据
df.to_csv('train_chinese.csv')
问题探讨:
1. 相对路径载入报错时,尝试使用os.getcwd()查看当前工作目录。
import os
os.getcwd()
2. 知道数据加载的方法后,试试pd.read_csv()和pd.read_table()的不同,如果想让他们效果一样,需要怎么做?了解一下'.tsv'和'.csv'的不同,如何加载这两个数据集?
1) csv: comma-separated values; tsv: tab-separated values
2) read_csv()读取','分隔符文件,read_table()读取'\t'分隔符文件,后者以行为单位进行存储,即一行只有一列
3)指定read_table()分隔符为','可实现read_csv()效果
df1 = pd.read_table('train.csv')
df1.head(3)
df2 = pd.read_table('train.csv',sep=',')
df2.head(3)
3. 逐块读取
逐块读取本质就是将文本分成若干块,每次处理 chunksize 行的数据,最终返回一个TextParser 对象,对该对象进行迭代遍历,可以完成逐块统计的合并处理。
该对象中的每一个元素为DataFrame,shape为 chunksize 行 x 原有 列。
chunker = pd.read_csv('train.csv', chunksize=300)
for piece in chunker:
print(piece)
学习心得:
魔鬼藏在细节中,但每一次看似费时费力地解决问题,都是为未来打下基础,随着时间慢慢积累,实现复利效应。而如果糊弄过去,就错过了真正造成改变的机会,恐怕未来每一刻都会重复此刻的困境。
标签:数据分析,head,df,探索性,read,train,pd,Task01,csv 来源: https://blog.csdn.net/Max_Augustus/article/details/121337127