文章目录

  • 第一章
    • 第一节 数据载入与初步观察
      • 0 导库
      • 1 载入数据
      • 2 查看数据基本信息
    • 第二节 pandas基础
      • 1 数据类型DataFrame 和 Series
      • 2 对文件数据的基本操作
    • 3 数据筛选
  • 第三节 探索性数据分析

第一章


第一节 数据载入与初步观察
0 导库

导入pandas、numpy(都是用于数据分析的库)

1 载入数据
  1. 使用相对路径绝对路径打开文件
  • 相对路径:如果在同一文件夹下,直接访问文件名;如果不在同一级目录下:

    ./:代表目前所在的目录

    ../:代表上一层目录

    /开头:代表根目录

  • 绝对路径:

    import os
    import  pandas as pd
    os.path.abspath('.')   #表示当前所处的文件夹的绝对路径
    os.path.abspath('..')  #表示当前所处的文件夹上一级文件夹的绝对路径
    data  = pd.read_csv('.\data\LJdata.csv')'  #表示当前所处的文件夹里data文件夹里的LJdata.csv文件
    
  1. read_csvread_table的区别

    存储效果不同,read_table按行存储,没有分隔(默认使用原始的逗号分隔);read_csv使用制表符进行分隔

  2. 逐块读取

    适合数据条数较多时。

补充:

返回的数据类型:使用read_csv返回DataFrame类型,加入chunksize属性之后返回的是TextFileReader对象

  • DataFrame类型可以显示,可以使用head()获取头部数据;TextFileReader对象不可以
  • 可以使用get_chunk()函数获取逐块的数据
  1. 将表头改为中文

    # 方法一:逐列修改列名
    df.columns = ['乘客ID','是否幸存',''...]
    #区别于方法二,该方法修改了方法本身# 方法二:在导入文件时修改
    df = pd.read_csv('train.csv', names=['乘客ID','是否幸存',''...])
    # 多加一行,不修改其数据本身
2 查看数据基本信息
df.describe()
# 会对每一列数据进行简单的分析:总数、平均数

显示前几行/后几行数据

df.head(10) #显示前10行数据
df.tail(15) #显示前15行数据

判断数据是否为空

# pandas.isnull(object)
df.isnull() #即可显示哪些数据为空

保存数据

df.to_csv('train_chinese.csv')

第二节 pandas基础
1 数据类型DataFrame 和 Series
  • DataFrame :(二维标签数据结构)

    可以用Series生成

    d = {'one': pd.Series([1., 2., 3.], index=['a', 'b', 'c']),'two': pd.Series([1., 2., 3., 4.], index=['a', 'b', 'c', 'd'])}
    # 生成字典d, d的第一个key对应第一个Series
    # DataFrame的最终形式类似于一张二维表格
    
  • Series:带标签的一维数组(一维标签数据结构),可以存储整数、浮点数、字符串、python对象等类型的数据。标签统称为索引

    s = pd.Series(np.random.randn(5), index=['a','b','c','d','e'])
    # 使用numpy生成五个随机数,并带上标签
    
    s1 = pd.Series([1,2,3,4,5], index =['a','b','c','d','e'])
    # 当然也可以自己手动输入数据,并附上标签
    

    Series可以用字典实例化:

    s = pd.Series({'b':1, 'a':0, 'c':2})
    

    python中的字典是另一种可变容器模型,且可存储任意类型对象。

    字典的每个键值对 key=>value 用冒号:分割,每个键值对之间用逗号, 分割,整个字典包括在花括号 {}

2 对文件数据的基本操作
  1. 查看DataFrame数据的每一列的名称

    df = pd.read_csv('train.csv')
    df.columns
    

  2. 查看某一列的所有数值

    df['Cabin'].head(3)
    # 或者df.Cabin.head(3),其中Cabin为该列的列名
    
  3. 对比两个文件的列的差别,并删除不相同的列

    del test_1['a'] #方法一
    test_1.pop('a') #方法二
    test_1.drop(['a'], axis=1)
    #方法三,该方法返回的是一个副本,而不是test_1本身;如果需要将源文件中保持修改,需要用到inplace参数(默认为Flase,改为True)。#其中,'a'是列名
    

    python中的布尔值True/False需要大写。

  4. 隐藏某几列的元素

    直接使用drop方法(不使用inplace参数),返回一个副本。相当于隐藏某几列。

3 数据筛选
  1. 以"Age"为筛选条件,显示年龄在10岁以下的乘客信息

    df['Age']<10 #会返回一列True/False的值,为比较的结果df[df['Age']<10] # 返回筛选后的数据集,列项完整
    

    下方语句使用了索引,使用[]放置需要的条件。

    索引类似于数组下标,表示其在有序数列中的位置。

    以此类推,将条件放在[]内,可以搜索出指定的数据项

  2. 以"Age"为条件,将年龄在10岁以上和50岁以下的乘客信息显示出来,并将这个数据命名为midage

    midage = df[(df["Age"]>10)& (df["Age"]<50)] # 也使用了索引
    

    使用交集和并集的操作:

    与、或:&|

    此案例中,用并集返回的数据条数会更多,因为并集返回的数据中有重合的部分

  3. 将midage的数据中第100行的"Pclass"和"Sex"的数据显示出来

    midage = midage.reset_index(drop=True) #将序号重置,否则下一步操作将返回原数据表中的第100行数据
    midage.loc[[100],['Pclass','Sex']]
    
    • reset_index():

      将DataFrame的序号重置

    • index()

      查看数据索引范围

  4. 使用loc方法将midage的数据中第100,105,108行的"Pclass","Name"和"Sex"的数据显示出来

    # 需要先执行`reset_index`()方法
    midage.loc[[100,105,108],['Pclass','Name','Sex']]
    
  5. 使用iloc方法将midage的数据中第100,105,108行的"Pclass","Name"和"Sex"的数据显示出来

    midage.iloc[[100,105,108],[2,3,4]]
    

    python中,获取某一行、列数据的方法

    列:使用类似于字典的方法

    df['a'] # a为列名
    

    行:使用loc()iloc()方法【但看着更像是列数据索引的区别】

    midage.loc[[100,105,108],['Pclass','Name','Sex']]
    midage.iloc[[100,105,108],[2,3,4]] # Pclass、Name、Sex分别在表中的第3、4、5列,但DataFrame从0开始计数,所以改为2、3、4.
    

    对比loc()iloc():

    • loc():通过行标签索引行数据
    • iloc():通过行号获取行数据

第三节 探索性数据分析

利用Pandas对数据进行排序

# 可以对比创建时如何设置索引值
df = pd.DataFrame(np.random.randn(6,4) ,index=list('213'), colums=list('ABCD'))
frame = pd.DataFrame(np.arange(8).reshape((2, 4)),ndex=['2', '1'], columns=['d', 'a', 'b', 'c'])
# 创建DataFrame数据

排序:

# 按数值排序
frame.sort_values(by='c', ascending=True) # 降序排列
frame.sort_values('c') #默认升序#按索引排序 - 行索引
frame.sort_index()#按索引排序 - 列索引
frame.sort_index(axis=1) # axis设置为1,表示按列操作;默认为0,表示按行操作

排序方法的参数:

axis

ascend

对泰坦尼克号数据(trian.csv)按票价和年龄两列进行综合排序

text.sort_values(by=['票价', '年龄'], ascending=False).head(3)

利用Pandas进行算术计算,计算两个DataFrame数据相加结果

frame1_a = pd.DataFrame(np.arange(9.).reshape(3, 3),columns=['a', 'b', 'c'],index=['one', 'two', 'three'])
frame1_b = pd.DataFrame(np.arange(12.).reshape(4, 3),columns=['a', 'e', 'c'],index=['first', 'one', 'two', 'second'])frame1_a + frame1_b
# 两个DataFrame相加后,会返回一个新的DataFrame,对应的行和列的值会相加,没有对应的会变成空值NaN

通过泰坦尼克号数据如何计算出在船上最大的家族有多少人

max(text['兄弟姐妹个数'] + text['父母子女个数'])

Pandas describe()

count : 样本数据大小
mean : 样本数据的平均值
std : 样本数据的标准差
min : 样本数据的最小值
25% : 样本数据25%的时候的值
50% : 样本数据50%的时候的值
75% : 样本数据75%的时候的值
max : 样本数据的最大值


the end.

【TL第二期】动手学数据分析-第一章 数据基本操作相关推荐

  1. 动手学数据分析 第一章之探索性数据分析

    要不今天开篇先吐槽一下工作,一句话--底层数据乱得我不想说话.今天一天很平静,跟昨天很像,下面是给我自己说的...关键是我们做的东西是服务于我们自己的,难道不应该是我们想看什么,顺便给某人看一下什么数 ...

  2. Datawhale---动手学数据分析---第一章:数据载入及初步观察(泰坦尼克的任务)

    1.1 载入数据 数据集下载 Titanic - Machine Learning from Disaster | Kaggle 1.1.1 任务一:导入numpy和pandas import num ...

  3. 动手学习数据分析第一章内容

    所想:所有的内容都是新的,之前没有接触过Markdown等内容,因此不清楚如何编辑文档,不知道如何将编辑的文档上传到网站上,一步一步来,总会有收获的,每天打卡也算是给自己一个鞭策,有点压力,尽量完成, ...

  4. 【Datawhale】动手学数据分析

    动手学数据分析 第一章:数据载入及初步观察 载入数据 任务一:导入numpy和pandas import numpy as np import pandas as pd 任务二:载入数据 train_ ...

  5. 【组队学习】【32期】动手学数据分析

    动手学数据分析 航路开辟者:陈安东.金娟娟.杨佳达.老表.李玲.张文涛.高立业 领航员:范淑卷 航海士:武者小路.曾心怡 基本信息 内容属性:精品入门课系列 开源内容:https://github.c ...

  6. 【组队学习】【31期】动手学数据分析

    动手学数据分析 航路开辟者:陈安东.金娟娟.杨佳达.老表.李玲.张文涛.高立业 领航员:陈玉立 航海士:陈安东.武帅.肖涵哲.叶前坤.沈豪 基本信息 开源内容:https://github.com/d ...

  7. 【组队学习】【35期】动手学数据分析

    动手学数据分析 航路开辟者:陈安东.金娟娟.杨佳达.老表.李玲.张文涛.高立业 领航员:六一 航海士:郑园园.李牧轩.高岩 基本信息 开源内容:https://github.com/datawhale ...

  8. 【组队学习】【33期】动手学数据分析

    动手学数据分析 航路开辟者:陈安东.金娟娟.杨佳达.老表.李玲.张文涛.高立业 领航员:张文恺 航海士:武帅.戴治旭.初晓宇 基本信息 内容属性:精品入门课系列 开源内容:https://github ...

  9. 【组队学习】【29期】6. 动手学数据分析

    6. 动手学数据分析 航路开辟者:陈安东.金娟娟.杨佳达.老表.李玲.张文涛.高立业 领航员:李婉桦 航海士:陈安东.叶前坤.18:46.吴卓辰.livid 基本信息 开源内容:https://git ...

最新文章

  1. Canopy聚类算法
  2. Java的字符串常量池
  3. JavaScript多态
  4. LetCode: 227. 简单计算器2
  5. 引入Spacy模块出错—OSError: [E941] Can‘t find model ‘en‘.
  6. 红黑树概念及其相关操作的实现
  7. ApacheCN 学习资源汇总 2019.1
  8. AFNnetworking快速教程,官方入门教程译
  9. 1046 划拳 (15 分)—PAT (Basic Level) Practice (中文)
  10. python程序设计简明教程课后答案_Python简明教程最后的练习题
  11. 工资软件测试白盒测试报告,白盒测试测试报告模板.doc
  12. 最新最全 VSCODE 插件推荐(2022版)
  13. 用jquery1.9版本判断ie浏览器及ie6浏览器
  14. 2020 的最后 1 天,写个年终总结吧!
  15. 全国各主要省市经纬度
  16. Lenovo联想G460无电池ThinkPad强制刷新BIOS的方法,非电池补丁
  17. poj 1102 LC-Display(模拟)
  18. 《Parallel batch k-means for Big data clustering》 SCI (聚类k-means)
  19. Flutter应用架构之BloC模式实践
  20. [TsinsenA1490] osu!(乔明达)

热门文章

  1. div 上下左右居中显示
  2. iphone QQ协议,andriodQQ协议,安卓QQ协议
  3. 微服务概念 概念提出者Martin Fowler的译文
  4. 浮动QQ在线客服,MSN在线代码|QQ在…
  5. G003-185-8
  6. 【PROCESSING 游戏编程】之黄金矿工
  7. 【游戏推荐】黄金矿工--OGEngine精品游戏推荐系列【二】
  8. 常见的限流算法和应用场景
  9. centos yum安装php ; php-peal来安装swoole
  10. 碧桂园的半年报启示:地产周期下如何转型发展?