Python 数据分析与数据可视化(七)pandas数据分析实战

文章目录

  • 7.1 pandas 常用数据类型
    • 7.1.1 一维数组与常用操作
      • 7.1.1.1 创建 Series
      • 7.1.1.2 修改指定索引对应的值
      • 7.1.1.3 对所有数据求绝对值
      • 7.1.1.4 对所有数据加 5
      • 7.1.1.5 对每行索引加前缀
      • 7.1.1.6 对每行索引加后缀
      • 7.1.1.7 数组数据的直方图
      • 7.1.1.8 获取最大值的索引
      • 7.1.1.9 测试数组的值是否在指定区间内
      • 7.1.1.10 查看数组中 90 分以上的数据
      • 7.1.1.11 获取数组的中值
      • 7.1.1.12 查看数组中大于中值的数据
      • 7.1.1.13 数组与数字之间的运算
      • 7.1.1.14 获取数组中最小的 2 个值
      • 7.1.1.15 两个 Series 对象之间的运算
      • 7.1.1.16 pipe 实现函数链式调用
      • 7.1.1.17 apply 对 Series 的值进行函数运算
      • 7.1.1.18 标准差、无偏方差、无偏标准差
      • 7.1.1.19 查看是否`存在`等价于 True 的值
      • 7.1.1.20 查看是否`所有值`都等价于 True
    • 7.1.2 时间序列与常用操作
      • 7.1.2.1 date_range() 创建时间序列
      • 7.1.2.2 使用时间序列做索引,创建 Series 对象
      • 7.1.2.3 操作使用时间序列做索引的 Series 对象
        • 7.1.2.3.1 切片取数据
        • 7.1.2.3.2 三分钟重采样并计算均值
        • 7.1.2.3.3 五小时重采样并求和
        • 7.1.2.3.4 五小时重采样并统计 OHLC 值
        • 7.1.2.3.5 替换索引
      • 7.1.2.4 Timestamp
        • 7.1.2.4.1 创建 Timestamp 对象
        • 7.1.2.4.2 查看指定日期是周几
        • 7.1.2.4.3 查看指定日期时间所在年是否是闰年
        • 7.1.2.4.4 查看指定日期所在的季度和月份
        • 7.1.2.4.5 转化为 Python 的日期时间对象
    • 7.1.3 二维数组 DataFrame
      • 7.1.3.1 布局结构
      • 7.1.3.2 创建 DataFrame
        • 7.1.3.2.1 普通参数作为索引的 DataFrame
        • 7.1.3.2.2 时间序列作为索引的 DataFrame
        • 7.1.3.2.3 使用字典创建 DataFrame
        • 7.1.3.2.4 创建 DataFrame 时自动扩充数据
  • 7.2 DataFrame 数据处理与分析实战
    • 7.2.1 测试数据
    • 7.2.2 读取数据
    • 7.2.3 设置列对齐
    • 7.2.4 筛选符合特定条件的数据
      • 7.2.4.1 对行进行切片
      • 7.2.4.2 iloc 使用数字做索引
      • 7.2.4.3 loc 和 at 使用标签文本做索引
      • 7.2.4.4 其他操作
    • 7.2.5 查看数据特征和统计信息
      • 7.2.5.1 查看所有列的统计信息
      • 7.2.5.2 查看指定列的统计信息
      • 7.2.5.3 查看四分位数
      • 7.2.5.4 查看中值
      • 7.2.5.5 查看指定数量的最小记录
      • 7.2.5.6 查看指定数量的最大记录
      • 7.2.5.7 查看最大值
      • 7.2.5.8 查看最小值
      • 7.2.5.9 查看最大值的行下标
      • 7.2.5.10 查看最小值的行下标
    • 7.2.6 按照不同标准对数据排序
      • 7.2.6.1 sort_index
      • 7.2.6.2 sort_values
    • 7.2.7 使用分组与聚合对员工业绩进行汇总
    • 7.2.8 处理超市交易数据中的异常值
    • 7.2.9 处理超市交易数据中的缺失值
    • 7.2.10 处理超市交易数据中的重复值
    • 7.2.11 使用数据差分查看员工业绩波动情况
    • 7.2.12 使用透视表查看业绩汇总数据
    • 7.2.13 使用交叉表查看业绩汇总数据
    • 7.2.14 使用重采样技术按时间段查看员工业绩
    • 7.2.15 多索引相关技术与操作
    • 7.2.16 使用标准差与协方差分析员工业绩
    • 7.2.17 使用pandas的属性接口实现高级功能
    • 7.2.18 绘制各员工在不同柜台业绩平均值的柱状图
    • 7.2.19 数据拆分与合并
  • 其他文章

7.1 pandas 常用数据类型

常用的数据结构

Series 					带标签的一维数组
DatetimeIndex			时间序列
DataFrame				带标签且大小可变的二维表格结构
Panel					带标签且大小可变的三维数组

7.1.1 一维数组与常用操作

  Series 是 pandas 提供的一维数组,由索引和值两部分组成,是一个类似于字典的结构

7.1.1.1 创建 Series

# 1. 通过 range 对象或列表创建,使用默认索引
s1 = pandas.Series(range(1, 20, 5))

# 2. 通过字典创建,使用键作为索引
s2 = pandas.Series({
     '语文':90, '数学':93, 'Python':92, '物理':91})

7.1.1.2 修改指定索引对应的值

s1[3] = -17
s2['语文'] = 94

7.1.1.3 对所有数据求绝对值

abs(s1)

7.1.1.4 对所有数据加 5

s1 + 5

7.1.1.5 对每行索引加前缀

#	0	->	20
#	1	->	21
#	2	->	22
#	.	.	.
#	.	.	.
#	.	.	.
s1.add_prefix(2)

7.1.1.6 对每行索引加后缀

#	语文		->	语文_张三
#	数学		->	数学_张三
#	Python	->	Python_张三
#	物理		->	物理_张三
s1.add_suffix('_张三')

7.1.1.7 数组数据的直方图

s2.hist()
matplotlab.show()

7.1.1.8 获取最大值的索引

s2.argmax()

7.1.1.9 测试数组的值是否在指定区间内

# 返回一个元素为 boolean 类型的 Series
s2.between(90, 94, inclusive=True)

7.1.1.10 查看数组中 90 分以上的数据

s2[s2>90]

7.1.1.11 获取数组的中值

s2.median()

7.1.1.12 查看数组中大于中值的数据

s2[s2>s2.median()]

7.1.1.13 数组与数字之间的运算

# 先对数组中所有数据开平方,然后扩大 10 倍,对结果四舍五入后保留一位小数
round((s2**0.5)*10, 1)

7.1.1.14 获取数组中最小的 2 个值

s2.nsmallest(2)

7.1.1.15 两个 Series 对象之间的运算

  只有两个等长的 Series 对象之间可以进行四则运算和幂运算,并且只对两个 Series 对象中都有的索引对应的值进行运算,非共同索引对应的值为控制 NaN

7.1.1.16 pipe 实现函数链式调用

s2.pipe(lambda x:x+3).pipe(lambda x:x*3)

7.1.1.17 apply 对 Series 的值进行函数运算

s2.apply(lambda x:x+3)

7.1.1.18 标准差、无偏方差、无偏标准差

s2.std()
s2.var()
s2.sem()

7.1.1.19 查看是否存在等价于 True 的值

any(s2)

7.1.1.20 查看是否所有值都等价于 True

all(s2)

7.1.2 时间序列与常用操作

7.1.2.1 date_range() 创建时间序列

date_range(start=None, end=None, periods=None, freq=‘D’)

常用参数
start=None			指定起始日期
end=None 			指定结束日期
periods=None		指定产生的数据数量
freq='D'			指定间隔,D(天), W(周), H(小时), M(月末最后一天), MS(月初第一天), T(分钟), A(年末最后一天), AS(年初第一天)

Python 数据分析与数据可视化(七)pandas数据分析实战_第1张图片

7.1.2.2 使用时间序列做索引,创建 Series 对象

pandas.Series(index, data)

常用参数
index			用于指定索引
data			用于指定数据
import pandas as pd
data = pd.Series(index=pd.date_range(start='20190701', periods=24, freq='H'), data=range(24))

7.1.2.3 操作使用时间序列做索引的 Series 对象

7.1.2.3.1 切片取数据

data[:5]

7.1.2.3.2 三分钟重采样并计算均值

data.resample('3H').mean()

7.1.2.3.3 五小时重采样并求和

data.resample('3H').sum()

7.1.2.3.4 五小时重采样并统计 OHLC 值

# OHLC 表示 OPEN(第一个数)、HIGH(最大的数)、LOW(最小的数)、CLOSE(最后的数)
data.resample('3H').ohlc()

7.1.2.3.5 替换索引

# 索引中的所有日期加一天
data.index = data.index + pd.Timedelta('1D')

7.1.2.4 Timestamp

7.1.2.4.1 创建 Timestamp 对象

day = pd.Timestamp('20190323')

7.1.2.4.2 查看指定日期是周几

day.weekday_name

7.1.2.4.3 查看指定日期时间所在年是否是闰年

pd.Timestamp('201903230800').is_leap_year

7.1.2.4.4 查看指定日期所在的季度和月份

day.quarter, day.month

7.1.2.4.5 转化为 Python 的日期时间对象

day.to_pydatetime()

7.1.3 二维数组 DataFrame

7.1.3.1 布局结构

Python 数据分析与数据可视化(七)pandas数据分析实战_第2张图片

7.1.3.2 创建 DataFrame

7.1.3.2.1 普通参数作为索引的 DataFrame

pd.DataFrame(np.random.randint(1, 20, (5, 3)),
			 index=range(5),
			 columns=['A', 'B', 'C'])

7.1.3.2.2 时间序列作为索引的 DataFrame

pd.DataFrame(np.random.randint(5, 15, (13, 3)),
			 index=pd.date_range(start='201907150900',
								 end='201907152100',
								 freq='H'),
			 columns=['熟食', '化妆品', '日用品'])

7.1.3.2.3 使用字典创建 DataFrame

# 字典的键会作为列名
pd.DataFrame({
     '语文':[22,23,56,78],
			  '数学':[45,13,76,78],
			  '英语':[23,28,24,96]},
			 index=['张三', '李四', '王五', '赵六']

7.1.3.2.4 创建 DataFrame 时自动扩充数据

# 未指定 index,使用默认索引,键作为 columns,第一列有 5 个值,第二列只有 1 个值,自动对 B 列进行扩充,使其与 A 列数据一样多
pd.DataFrame({
     'A':range(5), 'B':3})

7.2 DataFrame 数据处理与分析实战

7.2.1 测试数据

Python 数据分析与数据可视化(七)pandas数据分析实战_第3张图片

7.2.2 读取数据

read_excel(io, sheetname=0, header=0, skiprows=None, index_col=None, names=None, thousands=None, usecols, na_values=None)
常用参数
io : 指定要读取的文件,可以是字符串形式的文件路径、url 或文件对象
sheetname :指定读取的 worksheet,可以是表示 worksheet 序号的整数或表示 worksheet 名字的字符串;如果要同时读取多个 worksheet 可以使用形如 [0, 1, 'sheet3'] 的列表;如果指定为 None 则表示读取所有 worksheet 并返回包含多个 DataFrame 结构的字典,默认读取第一个 worksheet 中的数据
header : 指定 worksheet 列名,默认使用第 0 行;如果指定为 None 则使用数字作为表头
skiprows : 指定要跳过的行的索引组成的列表
index_col : 指定作为行索引的列下标,可以是包含若干下列表的列表
names : 指定列名
thousands : 指定文本转换为数字时的千分符;如果 Excel 中有以文本形式存储的数字,可以使用该参数
usecols : 指定要读取的列的索引或名字,多个列用列表
na_values : 指定哪些值被解释为缺失值

Python 数据分析与数据可视化(七)pandas数据分析实战_第4张图片

7.2.3 设置列对齐

pd.set_option('display.unicode.ambiguous_as_wide', True)
pd.set_option('display.unicode.east_asian_width', True)

Python 数据分析与数据可视化(七)pandas数据分析实战_第5张图片

7.2.4 筛选符合特定条件的数据

7.2.4.1 对行进行切片

Python 数据分析与数据可视化(七)pandas数据分析实战_第6张图片
注:切片操作左闭右开
Python 数据分析与数据可视化(七)pandas数据分析实战_第7张图片
注:先取列,后取行
Python 数据分析与数据可视化(七)pandas数据分析实战_第8张图片
注:先取行,后取列

7.2.4.2 iloc 使用数字做索引

在这里插入图片描述
Python 数据分析与数据可视化(七)pandas数据分析实战_第9张图片
Python 数据分析与数据可视化(七)pandas数据分析实战_第10张图片

7.2.4.3 loc 和 at 使用标签文本做索引

Python 数据分析与数据可视化(七)pandas数据分析实战_第11张图片
loc 可以用来索引多行或多列数据
Python 数据分析与数据可视化(七)pandas数据分析实战_第12张图片
at 不能用来索引多行或多列数据

7.2.4.4 其他操作

  1. DataFrame 可以 bool 类型 Series 作为索引
    Python 数据分析与数据可视化(七)pandas数据分析实战_第13张图片
    Python 数据分析与数据可视化(七)pandas数据分析实战_第14张图片
    Python 数据分析与数据可视化(七)pandas数据分析实战_第15张图片
    Python 数据分析与数据可视化(七)pandas数据分析实战_第16张图片

  2. 对数据求和
    在这里插入图片描述

7.2.5 查看数据特征和统计信息

7.2.5.1 查看所有列的统计信息

Python 数据分析与数据可视化(七)pandas数据分析实战_第17张图片

7.2.5.2 查看指定列的统计信息

数值列
Python 数据分析与数据可视化(七)pandas数据分析实战_第18张图片

非数值列
Python 数据分析与数据可视化(七)pandas数据分析实战_第19张图片

7.2.5.3 查看四分位数

Python 数据分析与数据可视化(七)pandas数据分析实战_第20张图片

7.2.5.4 查看中值

在这里插入图片描述

7.2.5.5 查看指定数量的最小记录

Python 数据分析与数据可视化(七)pandas数据分析实战_第21张图片

7.2.5.6 查看指定数量的最大记录

Python 数据分析与数据可视化(七)pandas数据分析实战_第22张图片

7.2.5.7 查看最大值

在这里插入图片描述

7.2.5.8 查看最小值

在这里插入图片描述

7.2.5.9 查看最大值的行下标

在这里插入图片描述

7.2.5.10 查看最小值的行下标

在这里插入图片描述

7.2.6 按照不同标准对数据排序

7.2.6.1 sort_index

根据行索引或列名排序

sort_index(axis=0, ascending=True, inplace=False)

常用参数
axis : 0 表示按照行索引排序,1 表示按照列名排序
ascending : True 表示升序排序,False 表示降序排序
inplace : True 表示原地排序,False 表示返回一个新的 DataFrame

Python 数据分析与数据可视化(七)pandas数据分析实战_第23张图片
扩展:汉字的 Unicode 编码通过内置函数 ord() 查看

7.2.6.2 sort_values

根据值排序

sort_values(by, ascending=True, na_position='last')

常用参数
by : 指定排序依据的一个列或多个列(多个列以列表形式给出)
ascending : True 表示升序排序,False 表示降序排序;可以通过传入 bool 列表(长度与 by 指定的列表长度相等)为不同的列指定不同的顺序
na_position : last 表示把缺失值放在最后面,first 表示把缺失值放在最前面

Python 数据分析与数据可视化(七)pandas数据分析实战_第24张图片
Python 数据分析与数据可视化(七)pandas数据分析实战_第25张图片

7.2.7 使用分组与聚合对员工业绩进行汇总

聚合:对分组后的每一组数据再次调用聚合函数,包括求和、求均值、求中值等

groupby(by=None, axis=0, as_index=True, squeeze=False)

常用参数
by : 指定作为分组依据的列名(一个或多个)或行索引(函数、字典、Series 对象)
axis : 0 表示按照行索引分组,1 表示按照列名分组
as_index : True 表示用来分组的列中的数据作为结果 DataFrame 的行索引,False 表示用来分组的列中的数据不作为结果 DataFrame 的行索引
squeeze : True 表示在可能的情况下降低结果对象的维度

 首先将行索引的每个值传入 lambda 表达式,再按照处理之后的数据进行分组,然后进行聚合
Python 数据分析与数据可视化(七)pandas数据分析实战_第26张图片
 当参数 by 的值为字典时
Python 数据分析与数据可视化(七)pandas数据分析实战_第27张图片
 对不同的列可以采用不同的函数,通过 aggregate 指定聚合的方式
Python 数据分析与数据可视化(七)pandas数据分析实战_第28张图片
 使用 agg() 方法可以直接对指定列进行聚合
Python 数据分析与数据可视化(七)pandas数据分析实战_第29张图片
 使用 agg() 方法对分组结果进行聚合
Python 数据分析与数据可视化(七)pandas数据分析实战_第30张图片

7.2.8 处理超市交易数据中的异常值

异常值:严重超出正常范围的数值
处理方法:确定正常范围,根据实际情况对异常值进行调整
Python 数据分析与数据可视化(七)pandas数据分析实战_第31张图片

7.2.9 处理超市交易数据中的缺失值

dropna(axis=0, how='any', thresh=None, subset=None) 

常用参数
axis : 0 表示按照行索引删除,1 表示按照列名删除
how : any 表示只要某行包含缺失值就丢弃,all 表示某行全部为缺失值才丢弃
thresh : 用来指定保留包含几个非缺失值数据的行
subset : 用来指定在判断缺失值时只考虑哪些列

 首先,判断数据中是否含缺失值
Python 数据分析与数据可视化(七)pandas数据分析实战_第32张图片
 然后,筛选出含有缺失值的行
Python 数据分析与数据可视化(七)pandas数据分析实战_第33张图片
注:df['交易额'] 与 df.交易额 在功能上等价
 在对缺失值处理之前,复制一份数据,以免接下来的操作影响原来的数据
Python 数据分析与数据可视化(七)pandas数据分析实战_第34张图片
 处理缺失值
在这里插入图片描述
 查看处理后的结果
Python 数据分析与数据可视化(七)pandas数据分析实战_第35张图片

fillna(value=None, method=None, limit=None, inplace=False)

常用参数
value : 指定要替换的值,可以是标量、字典、Series 或 DataFrame
method : 指定填充缺失值的方式,pad 或 ffill 表示使用扫描过程中遇到的最后一个有效值一直填充到下一个有效值;backfill 或 bfill 表示使用缺失值之后遇到的第一个有效值填充前面遇到的所有连续缺失值
limit : 指定设置了参数 method 时最多填充多少个连续的缺失值
inplace : True 表示原地排序,False 表示返回一个新的 DataFrame

 还可以使用 fillna() 方法填充缺失值
Python 数据分析与数据可视化(七)pandas数据分析实战_第36张图片

7.2.10 处理超市交易数据中的重复值

duplicated(subset=None, keep='first')

常用参数
subset : 指定判断不同行数据是否重复时依据的一列或多列,默认使用整行所有列的数据进行比较
keep : 'first' 表示重复数据的第一次出现标记为 False;'last' 表示重复数据的最后一次出现标记为 False;False 表示标记所有重复数据为 True

 首先获取重复值
Python 数据分析与数据可视化(七)pandas数据分析实战_第37张图片
 进一步获取重复值
Python 数据分析与数据可视化(七)pandas数据分析实战_第38张图片

drop_duplicates(subset=None, keep='first', inplace=False)

常用参数
subset : 指定判断不同行数据是否重复时依据的一列或多列,默认使用整行所有列的数据进行比较
keep : 'first' 表示重复数据的第一次出现标记为 False;'last' 表示重复数据的最后一次出现标记为 False;False 表示标记所有重复数据为 True
inplace : True 表示原地排序,False 表示返回一个新的 DataFrame

 处理重复值
Python 数据分析与数据可视化(七)pandas数据分析实战_第39张图片
 此外,可以查看是否有录入错误的工号和姓名
Python 数据分析与数据可视化(七)pandas数据分析实战_第40张图片

7.2.11 使用数据差分查看员工业绩波动情况

diff(periods=1, axis=0)

常用参数
periods : 指定差分的跨度,periods=1 且 axis=0 表示每一行数据减去紧邻的上一行数据;periods=2 且 axis=0 表示每一行减去上面第二行的数据,结果作为新的 DataFrame 中的一项
axis : 0 按行进行纵向差分;1 按列进行横向差分

Python 数据分析与数据可视化(七)pandas数据分析实战_第41张图片

7.2.12 使用透视表查看业绩汇总数据

 透视表用来根据一个或多个键进行聚合,把数据分散到对应的行和列上去,是数据分析常用技术之一。

pivot(index=None, columns=None, values=None)

常用参数
index : 指定使用哪一列数据作为结果 DataFrame 的索引
columns : 指定使用哪一列数据作为结果 DataFrame 的列名
values : 指定使用哪一列数据作为结果 DataFrame 的值

Python 数据分析与数据可视化(七)pandas数据分析实战_第42张图片
 可以对透视表进一步进行操作
Python 数据分析与数据可视化(七)pandas数据分析实战_第43张图片

pivot_table(index=None, columns=None, values=None, aggfunc='mean', fill_value=None, margins=False, margins_name='All', dropna=True)

常用参数
index : 指定使用哪一列数据作为结果 DataFrame 的索引
columns : 指定使用哪一列数据作为结果 DataFrame 的列名
values : 指定使用哪一列数据作为结果 DataFrame 的值
aggfunc : 指定数据的聚合方式
fill_value : 指定把透视表中的缺失值替换为什么值
margins : 指定是否显示边界以及边界上的数据
margins_name : 指定边界数据的索引名称和列名
dropna : 指定是否丢弃缺失值

 margin=True 会在结果中多加一行和一列
Python 数据分析与数据可视化(七)pandas数据分析实战_第44张图片
Python 数据分析与数据可视化(七)pandas数据分析实战_第45张图片

7.2.13 使用交叉表查看业绩汇总数据

 交叉表是一种特殊的透视表,往往用来统计频次,也可以使用参数 aggfunc 指定聚合函数实现其他功能。

crosstab(index, columns, values=None, aggfunc=None, rownames=None, colnames=None)

常用参数
index : 指定使用哪一列数据作为结果 DataFrame 的索引
columns : 指定使用哪一列数据作为结果 DataFrame 的列名
values : 指定使用哪一列数据作为结果 DataFrame 的值
aggfunc : 指定聚合函数,默认为统计次数
rownames : 指定行索引的名字,如果不指定,直接使用参数 index 指定的列名
colnames : 指定列索引的名字,如果不指定,直接使用参数 columns 指定的列名

在这里插入图片描述
Python 数据分析与数据可视化(七)pandas数据分析实战_第46张图片

7.2.14 使用重采样技术按时间段查看员工业绩

前提:保证 index 为日期时间型数据

resample(rule, how=None, label=None, on=None)

常用参数
rule : 指定重采样的时间间隔,例如 '7D' 表示每 7 天采样一次
how : 指定如何处理两个采样时间之间的数据
label : left 表示使用采样周期的起始时间作为结果 DataFrame 的 index;right 表示使用采样周期的结束时间作为结果 DataFrame 的 index
on : 指定根据哪一列进行重采样,默认根据 index 进行重采样,如果进行指定,要求该列数据为日期时间类型

在这里插入图片描述
Python 数据分析与数据可视化(七)pandas数据分析实战_第47张图片
Python 数据分析与数据可视化(七)pandas数据分析实战_第48张图片

7.2.15 多索引相关技术与操作

 DataFrame 结构支持多个索引,既可以在读取数据时使用 index_col 指定多列,也可以通过 groupby() 方法分组时指定多个索引。对于含有多个索引的 DataFrame 结构,在使用 sort_index() 方法按索引排序使用 groupby() 方法进行分组时,都可以使用参数 level 指定哪一级索引进行排序或分组
Python 数据分析与数据可视化(七)pandas数据分析实战_第49张图片
在这里插入图片描述
Python 数据分析与数据可视化(七)pandas数据分析实战_第50张图片
Python 数据分析与数据可视化(七)pandas数据分析实战_第51张图片
Python 数据分析与数据可视化(七)pandas数据分析实战_第52张图片

7.2.16 使用标准差与协方差分析员工业绩

  1. 关于标准差
     如果标准差较大,则代表大部分数值和其平均值之间差异较大;如果标准差较小,则代表这些数值较接近平均值
    通过 std() 方法实现
  2. 关于协方差
     对于多组数据,可以使用协方差描述数据之间的相关性,如果两组数据 X 和 Y 的协方差 cov(X, Y) 的值为正值,说明两者正相关,结果为负值就说明负相关,如果为 0,认为两组数据在统计上“相互独立”。
    通过 cov() 方法实现
  3. 关于协方差矩阵
     为了便于分析多组数据之间的相关性,可以使用协方差矩阵。协方差矩阵对角线上分别是 X 和 Y 的方差,非对角线上是协方差。协方差大于 0 表示 X 和 Y 若其中一个增加,另一个也会增加;小于 0 表示如果其中一个增加则另一个会减少;为 0 表示,两者独立,其中一个变化时不影响另一个。方差是协方差的一种特殊情况,也就是两个变量相同时的情况

7.2.17 使用pandas的属性接口实现高级功能

  1. DataFrame 数据中的日期时间列支持 dt 接口,该接口提供了 dayofweek(周几)、dayofyear(一年的第几天)、is_leap_year(是否为闰年)、quarter(哪个季度)、weekday_name(周几) 等属性和方法
    注:dayofweek 和 weekday_name 都是周几,weekday_name 是英文,dayofweek 是 0-6 的数字
    Python 数据分析与数据可视化(七)pandas数据分析实战_第53张图片
    Python 数据分析与数据可视化(七)pandas数据分析实战_第54张图片

  2. DataFrame 数据中的字符串列支持 str 接口,该接口提供了 center、contains、count、endswith、find、extract、lower、split 等属性和方法
    Python 数据分析与数据可视化(七)pandas数据分析实战_第55张图片
    Python 数据分析与数据可视化(七)pandas数据分析实战_第56张图片
    Python 数据分析与数据可视化(七)pandas数据分析实战_第57张图片
    Python 数据分析与数据可视化(七)pandas数据分析实战_第58张图片
    Python 数据分析与数据可视化(七)pandas数据分析实战_第59张图片

7.2.18 绘制各员工在不同柜台业绩平均值的柱状图

  1. 关于 DataFrame 结构的绘图功能
     DataFrame 结构的 plot() 方法可以直接绘制折线图柱状图饼状图等各种图形,绘图时会自动调用 matplotlib 扩展库的绘图功能
  2. 对 DataFrame 结构中的数据进行可视化时,既可以直接使用 plot() 方法和 kind 参数指定图形的形状,也可以使用 plot 类的 line()、bar() 或其他方法绘制相应形状的图形
    在这里插入图片描述
    Python 数据分析与数据可视化(七)pandas数据分析实战_第60张图片
    Python 数据分析与数据可视化(七)pandas数据分析实战_第61张图片

7.2.19 数据拆分与合并

  1. 拆分
     可以对 DataFrame 使用切片或 loc 等运算按行或列进行拆分,得到多个 DataFrame 结构
  2. 合并
    concat() 、append()、merge()、join() 函数用于合并多个 DataFrame 结构
concat(objs, axis=0)

常用参数
objs : 表示包含多个 Series、DataFrame 或 Panel 对象的序列
axis : 0 按行连接;1 按列连接
  1. 实例一:合并两个 Sheet 中的数据
    Python 数据分析与数据可视化(七)pandas数据分析实战_第62张图片
    Python 数据分析与数据可视化(七)pandas数据分析实战_第63张图片
     append() 方法将作为参数的 DataFrame 追加到当前 DataFrame 尾部
    Python 数据分析与数据可视化(七)pandas数据分析实战_第64张图片
    Python 数据分析与数据可视化(七)pandas数据分析实战_第65张图片
  2. merge() 方法
     将当前 DataFrame 和 right 参数指定的 DataFrame 进行合并
merge(right, how='inner', on=None, left_on=None, right_on=None)

常用参数
right : 另一个 DataFrame 结构
how : 表示数据连接的方式。取值可以是 'left'、'right'、'outer'、'inner'
on : 指定连接时依据的列名或包含若干列名的列表,要求指定的列名在两个 DataFrame 中都存在,如果没有任何参数指定连接键则根据两个 DataFrame 的列名交集进行连接
left_on : 指定连接时依据的左侧列名标签
right_on : 指定连接时依据的右侧列名标签
  1. join() 方法
     可以实现按列对左表(调用 join() 方法的DataFrame)和右表(other 参数指定的 DataFrame)合并。如果右表索引与左表某一列的值相同可以直接连接;如果要根据右表中某一列的值与左表连接,需要先对右表调用 set_index() 方法设定这一列为索引
join(other, on=None, how='left', lsuffix='', rsuffix='')

常用参数
other : 右表
on : 指定连接时依据的左表列名,如果不指定则按左表索引的值进行连接
how : 表示数据连接的方式。取值可以是 'left'、'right'、'outer'、'inner'
lsuffix : 指定列名的后缀
rsuffix : 指定列名的后缀
  1. 实例二
    Python 数据分析与数据可视化(七)pandas数据分析实战_第66张图片
    Python 数据分析与数据可视化(七)pandas数据分析实战_第67张图片
    Python 数据分析与数据可视化(七)pandas数据分析实战_第68张图片

其他文章

Python 数据分析与数据可视化(一)Python 开发环境搭建与编码规范
Python 数据分析与数据可视化(二)数据类型、运算符与内置函数
Python 数据分析与数据可视化(三)列表、元组、字典、集合与字符串
Python 数据分析与数据可视化(四)文件操作
Python 数据分析与数据可视化(五)线性代数基本知识
Python 数据分析与数据可视化(六)numpy 数组和矩阵运算
Python 数据分析与数据可视化(七)pandas数据分析实战
Python 数据分析与数据可视化(八)sklearn机器学习实战
Python 数据分析与数据可视化(工具篇)课程所需扩展库安装
Python 数据分析与数据可视化(实践篇)泰坦尼克号旅客生存预测

你可能感兴趣的:(Python,数据分析与数据可视化,python,数据分析)