数据分析02 /pandas基础

1. pandas简介

  • numpy能够帮助我们处理的是数值型的数据,当然在数据分析中除了数值型的数据还有好多其他类型的数据(字符串,时间序列),那么pandas就可以帮我们很好的处理除了数值型的其他数据!

  • pandas中的两个常用的类:Series/DataFrame

2. Series

  • 定义:

    Series是一种类似一维数组的对象,由下面两个部分组成:

    values:一组数据(ndarray类型)

    index:相关的数据索引标签

  • Series的创建

    1.由列表或numpy数组创建

    2.由字典创建

    代码示例:

    import pandas as pd
    from pandas import Series,DataFrame
    import numpy as np # 方式一:
    s1 = Series(data=[1,2,3,4,5]) # 方式二:
    s2 = Series(data=np.random.randint(0,100,size=(4,))) # 方式三:
    dic = {
    'a':1,
    'b':2,
    'c':3
    }
    # Series的索引可以为字符串
    s3 = Series(data=dic) # Series这个数据结构中存储的数据一定得是一个维度
  • Series的索引

    1.隐式索引:数值型,默认是隐式索引

    2.显式所用:自定义(字符串),提高数据的可读性

    代码示例:

    # index指定显式索引
    s4 = Series(data=[1,2,3],index=['数学','英语','理综'])
  • Series的索引和切片

    1.索引操作

    # 隐式索引操作
    s4[0]
    # 显示索引操作
    s4['数学']
    s4.数学

    2.切片

    s4[0:2]
  • Series的常用属性

    • shape:形状; 例:s4.shape
    • size:大小; 例:s4.size
    • index:行索引; 例:s4.index
    • values:列索引; 例:s4.values
  • Series的常用方法

    1.head(),tail()

    s4.head(2)   # 显式前n条数据
    s4.tail(2) # 显式后n条数据

    2.unique()

    s = Series(data=[1,1,2,2,3,4,5,6,6,6,6,6,6,7,8])
    s.unique() # 对Series进行去重

    3.add() sub() mul() div() /Series的算术运算

    s + s 相当于 s.add(s)

    算数运算的法则:索引与之匹配的值进行算数运算,否则补空

    s1 = Series(data=[1,2,3,4])
    s2 = Series(data=[5,6,7])
    s1 + s2 # 结果:
    0 6.0
    1 8.0
    2 10.0
    3 NaN
    dtype: float64

    4.isnull(),notnull()/应用:清洗Series中的空值

    s1 = Series(data=[1,2,3,4],index=['a','b','c','e'])
    s2 = Series(data=[1,2,3,4],index=['a','d','c','f'])
    s = s1 + s2
    s # 结果:
    a 2.0
    b NaN
    c 6.0
    d NaN
    e NaN
    f NaN
    dtype: float64 # 清洗结果的空值:boolean可以作为索引取值
    s[s.notnull()]

3. DataFrame

  • DataFrame简介

    DataFrame是一个【表格型】的数据结构。DataFrame由按一定顺序排列的多列数据组成。设计初衷是将Series的使用场景从一维拓展到多维。DataFrame既有行索引,也有列索引。

    • 行索引:index
    • 列索引:columns
    • 值:values
  • DataFrame的创建

    1.ndarray创建

    2.字典创建

    示例:

    df = DataFrame(data=np.random.randint(0,100,size=(5,6)))
    df
    dic = {
    'name':['zhangsan','lisi','wangwu'],
    'salary':[10000,15000,10000]
    }
    df = DataFrame(data=dic,index=['a','b','c'])
    df
  • DataFrame的属性

    • df.values:所有的值
    • df.shape:形状
    • df.index:行索引
    • df.columns:列索引
  • DataFrame索引操作

    1.对列进行索引

    # 索引取单列
    df['name'] # 索引取多列
    df[['age','name']]

    2.对行进行索引

    # 索引取单行
    df.loc['a'] # 显示索引操作
    df.iloc[0] # 隐式索引操作 # 索引取多行
    df.loc[['a','c']] # 显示索引操作
    df.iloc[[0,2]] # 隐式索引操作

    3.取单个元素

    df.loc['b','salary']  # 显示索引操作
    df.iloc[1,1] # 隐式索引操作

    4.取多个元素值

    df.loc[['b','c'],'salary']  # 显示索引操作
    df.iloc[[1,2],1] # 隐式索引操作
  • DataFrame的切片操作

    1.对行进行切片

    # 切行
    df[0:2]

    2.对列进行切片

    # 切列
    df.iloc[:,0:2]
  • DataFrame的运算:和Series是一样

    元素对应的行列索引保持一致,则元素间可以进行算数运算,否则补空

  • 查看df的数据的数据类型

    df.dtypes
    df.info():信息更全
  • 时间数据类型的转换:pd.to_datetime(col)

    示例:

    dic = {
    'time':['2019-01-09','2011-11-11','2018-09-22'],
    'salary':[1111,2222,3333]
    }
    df = DataFrame(data=dic) # 将time列转换成时间序列类型
    df['time'] = pd.to_datetime(df['time']) # 转换前time的类型是:object
    # 转换后time的类型是:datetime64[ns]
    # 转换后可以进行datetime64[ns]类型相关的操作
  • 将某一列设置为行索引:df.set_index()

    示例:

    # 将time这一列作为原数据的行索引
    df.set_index(df['time'],inplace=True) # inplace将新表替换原表 # 将之前的time列删掉
    df.drop(labels='time',axis=1,inplace=True) # drop函数中axis的0行,1列

4. 总结:

  • 将查出来的数据写入文件中:df.to_csv('文件路径')
  • 将文件中的数据查出来/pd调用:data = pd.read_csv('文件路径'); 显示前5行:data.head()
  • 将时间转换成时间序列化/pd调用:df['date'] = pd.to_datetime(df['date'])
  • 使用drop时axis=1代表的是列:df.drop(labels='Unnamed: 0',axis=1,inplace=True),inplace是判断是否用新表替换原表
  • data.resample('M'):年:A | 月:M |日:D
  • df.info():查看数据的详细信息
  • df.describe():返回数据统计的描述

数据分析02 /pandas基础的更多相关文章

  1. 利用Python进行数据分析(12) pandas基础: 数据合并

    pandas 提供了三种主要方法可以对数据进行合并: pandas.merge()方法:数据库风格的合并: pandas.concat()方法:轴向连接,即沿着一条轴将多个对象堆叠到一起: 实例方法c ...

  2. 利用Python进行数据分析(9) pandas基础: 汇总统计和计算

    pandas 对象拥有一些常用的数学和统计方法.   例如,sum() 方法,进行列小计:   sum() 方法传入 axis=1 指定为横向汇总,即行小计:   idxmax() 获取最大值对应的索 ...

  3. 利用Python进行数据分析(8) pandas基础: Series和DataFrame的基本操作

    一.reindex() 方法:重新索引 针对 Series   重新索引指的是根据index参数重新进行排序. 如果传入的索引值在数据里不存在,则不会报错,而是添加缺失值的新行. 不想用缺失值,可以用 ...

  4. 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍

    一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构 ...

  5. 基于 Python 和 Pandas 的数据分析(2) --- Pandas 基础

    在这个用 Python 和 Pandas 实现数据分析的教程中, 我们将明确一些 Pandas 基础知识. 加载到 Pandas Dataframe 的数据形式可以很多, 但是通常需要能形成行和列的数 ...

  6. 利用Python进行数据分析(10) pandas基础: 处理缺失数据

      数据不完整在数据分析的过程中很常见. pandas使用浮点值NaN表示浮点和非浮点数组里的缺失数据. pandas使用isnull()和notnull()函数来判断缺失情况. 对于缺失数据一般处理 ...

  7. 数据分析:pandas 基础

    pandas 是基于 Numpy 构建的含有更高级数据结构和工具的数据分析包 类似于 Numpy 的核心是 ndarray,pandas 也是围绕着 Series 和 DataFrame 两个核心数据 ...

  8. python数据分析02语法基础

    在我来看,没有必要为了数据分析而去精通Python.我鼓励你使用IPython shell和Jupyter试验示例代码,并学习不同类型.函数和方法的文档.虽然我已尽力让本书内容循序渐进,但读者偶尔仍会 ...

  9. 利用Python进行数据分析(15) pandas基础: 字符串操作

      字符串对象方法 split()方法拆分字符串: strip()方法去掉空白符和换行符: split()结合strip()使用: "+"符号可以将多个字符串连接起来: join( ...

随机推荐

  1. Spring Cloud 系列之 Alibaba Nacos 配置中心

    Nacos 介绍 Nacos 是 Alibaba 公司推出的开源工具,用于实现分布式系统的服务发现与配置管理.英文全称 Dynamic Naming and Configuration Service ...

  2. vc6.0创建文件时,出现很多烫烫烫解决方法

    vc6.0创建文件时,出现很多烫烫烫烫解决方法 SWM2烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫.IA 如果项目文件放在桌面上 如:C:\Documents and Settings\txwtec ...

  3. TopK问题,数组中第K大(小)个元素问题总结

    问题描述: 在未排序的数组中找到第 k 个最大的元素.请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素. 面试中常考的问题之一,同时这道题由于解法众多,也是考察时间复杂 ...

  4. 手把手教你使用Python抓取QQ音乐数据(第一弹)

    [一.项目目标] 获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名.专辑名.播放链接. 由浅入深,层层递进,非常适合刚入门的同学练手. [二.需要的库] 主要涉及的库有:requests.json ...

  5. SpringCloud 入门(一)

    本人也是刚接触springcloud,现在先将创建项目的过程记录下来,springcloud的理解日后再慢慢补齐,最好还是自己参考官方文档的介绍 使用工具:IDEA IDEA创建springcloud ...

  6. EJB JMS javax.naming.NameNotFoundException: XXX not bound

    练习EJB MessageDrivenBean时部署不成功,一直报错 09:57:29,017 WARN [JmsActivation] Failure in jms activation org.j ...

  7. StringEscapeUtils防止xss攻击详解

    StringUtils和StringEscapeUtils这两个实用类. 1.转义防止xss攻击 1.转义可以分为下面的几种情况 第一用户输入特殊字符的时候,在提及的时候不做任何处理保持到数据库,当用 ...

  8. 在树莓派上读取土壤湿度传感器读书-python代码实现及常见问题(全面简单易懂)

    本篇文章简单介绍了如何在树莓派上配置土壤湿度传感器以读取土壤湿度(以百分比的形式出现)及代码实现. 主要包含有以下4个模块: 一.土壤湿度传感器常见类型及介绍 二.实验所需设备 三.设备连线方式与代码 ...

  9. Redis高级特性介绍以及实例分析

    Redis基础类型回顾 转自:http://www.jianshu.com/p/af7043e6c8f9 String Redis中最基本,也是最简单的数据类型.注意,VALUE既可以是简单的Stri ...

  10. Executors框架之ScheduledExecutorService实现定时任务

    一.简介 An ExecutorService that can schedule commands to run after a given delay, or to execute periodi ...