为什么学习pandas

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

什么是pandas?

  • 首先先来认识pandas中的两个常用的类
    • Series
    • DataFrame
import pandas as pd
from pandas import Series,DataFrame
import numpy as np

Series

  • Series是一种类似与一维数组的对象,由下面两个部分组成:
    • values:一组数据(ndarray类型)
    • index:相关的数据索引标签
  • Series的创建
    • 由列表或numpy数组创建
    • 由字典创建

# 隐式索引:默认索引。0,1,2,3,4
# 显式索引:自定义的索引
w = Series(data=[2,4,5,5], index=[\'bu\', \'nbs\',\'sdf\',\'ad\'])
运行结果:
bu     2
nbs    4
sdf    5
ad     5
dtype: int64
  • Series的索引和切片
w[\'nbs\':\'ad\']  和   w[1:4]
结果:
nbs    4
sdf    5
ad     5
dtype: int64

w[\'bu\']  和   w.bu
结果: 2
  • Series的常用属性
    • shape 返回基础数据形状的元组
    • size 返回数组中的元素数
    • index 以列表的形式返回数组的索引
    • values 以列表的形式返回数组的所有值
  • Series的常用方法
    • head(),tail() # 显示前两个元素,显示后两个元素
    • unique() # 去重
    • isnull(),notnull() # 检测哪些元素为空值,检测哪些元素不为空值
    • add() sub() mul() div()
  • Series的算术运算
    • 法则:索引一致的元素进行算数运算否则补空
s1 = Series(data=[1,2,3,4,5])
s2 = Series(data=[1,2,3])
s = s1 + s2
结果:
0    2.0
1    4.0
2    6.0
3    NaN
4    NaN

s.isnull()            s.notnull()
结果:                结果:
0    False            0     True
1    False            1     True
2    False            2     True
3     True            3    False
4     True            4    False
# 想要去除Seriese中的空值
s[[True,True,True,False,False]]    或者      s[s.notnull()] 
0    2.0
1    4.0
2    6.0

DataFrame

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

  • DataFrame的属性
    • values
    • columns # 保存列名信息
    • index
    • shape
  • DataFrame索引操作
    • 对行进行索引
    • 队列进行索引
    • 对元素进行索引
  • iloc:
    • 通过隐式索引取行
  • loc:
    • 通过显示索引取行
# 取单行
df.iloc[0]
df.loc[\'语文\']
# 取多行
df.iloc[[0,2]]

df.loc[\'英语\',\'李四\'] #取单个值
df.loc[[\'英语\',\'数学\'],\'张三\'] #取多个值
  • DataFrame的切片操作
    • 对行进行切片
    • 对列进行切片
df[0:2] #切行

        张三   李四
语文	150	0
数学	150	0

df.iloc[:,0:1] #切列
        张三
语文	150
数学	150
英语	150
理综	150
  • df索引和切片操作
    • 索引:
      • df[col]:取列
      • df.loc[index]:取行
      • df.iloc[index,col]:取元素
    • 切片:
      • df[index1:index3]:切行
      • df.iloc[:,col1:col3]:切列
  • 时间数据类型的转换
    • pd.to_datetime(col)
  • 将某一列设置为行索引
    • df.set_index()

============================================

练习:
qimo = df
qizhong = df

  1. 假设ddd是期中考试成绩,ddd2是期末考试成绩,请自由创建ddd2,并将其与ddd相加,求期中期末平均值。
    (qizhong + qimo) / 2 #计算均值
  2. 假设张三期中考试数学被发现作弊,要记为0分,如何实现?
qizhong.iloc[1,0] = 0
qizhong
结果:
	张三	李四
语文	150	0
数学	0	0
英语	150	0
理综	150	0
  1. 李四因为举报张三作弊立功,期中考试所有科目加100分,如何实现?
    qizhong[\'李四\'] += 100
  2. 后来老师发现有一道题出错了,为了安抚学生情绪,给每位学生每个科目都加10分,如何实现?
    qizhong += 10
    ============================================

版权声明:本文为freedom0923原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/freedom0923/p/13214607.html