【Datawhale】动手学数据分析


第一章:数据载入及初步观察

载入数据

任务一:导入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)

【思考】所谓将表头改为中文其中一个思路是:将英文列名表头替换成中文。还有其他的方法吗?
答:可以读入后再进行修改

初步观察

任务一:查看数据的基本信息

  train_data.info()
  <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数据的每列的名称

  train_data.columns
  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)

本站声明:
1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;

2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;

3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;

4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;

5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/293986.html

(0)
上一篇 2022年11月30日
下一篇 2022年11月30日

相关推荐

发表回复

登录后才能评论