网站通栏图片代码,怎么用dw网站怎么建设,装修公司怎么找客源最有效,学做网页设计专栏介绍
结合自身经验和内部资料总结的Python教程#xff0c;每天3-5章#xff0c;最短1个月就能全方位的完成Python的学习并进行实战开发#xff0c;学完了定能成为大佬#xff01;加油吧#xff01;卷起来#xff01;
全部文章请访问专栏#xff1a;《Python全栈教…专栏介绍
结合自身经验和内部资料总结的Python教程每天3-5章最短1个月就能全方位的完成Python的学习并进行实战开发学完了定能成为大佬加油吧卷起来
全部文章请访问专栏《Python全栈教程0基础》 再推荐一下最近热更的《大厂测试高频面试题详解》 该专栏对近年高频测试相关面试题做详细解答结合自己多年工作经验以及同行大佬指导总结出来的。旨在帮助测试、python方面的同学顺利通过面试拿到自己满意的offer 文章目录 专栏介绍Pandas的基础应用详解Series的应用创建Series对象方法1通过列表或数组创建Series对象方法2通过字典创建Series对象。 索引和切片使用整数索引使用自定义的标签索引切片操作花式索引布尔索引统计相关的方法数据处理的方法排序和取头部值的方法 绘制图表 Pandas的基础应用详解
Pandas是Wes McKinney在2008年开发的一个强大的分析结构化数据的工具集。Pandas以NumPy为基础数据表示和运算提供了用于数据处理的函数和方法对数据分析和数据挖掘提供了很好的支持同时Pandas还可以跟数据可视化工具Matplotlib很好的整合在一起非常轻松愉快的实现数据的可视化展示。
Pandas核心的数据类型是Series数据系列、DataFrame数据表/数据框分别用于处理一维和二维的数据除此之外还有一个名为Index的类型及其子类型它为Series和DataFrame提供了索引功能。日常工作中以DataFrame使用最为广泛因为二维的数据本质就是一个有行有列的表格想一想Excel电子表格和关系型数据库中的二维表。上述这些类型都提供了大量的处理数据的方法数据分析师可以以此为基础实现对数据的各种常规处理。
Series的应用
Pandas库中的Series对象可以用来表示一维数据结构跟数组非常类似但是多了一些额外的功能。Series的内部结构包含了两个数组其中一个用来保存数据另一个用来保存数据的索引。
创建Series对象 提示在执行下面的代码之前请先导入pandas以及相关的库文件具体的做法可以参考上一章。 方法1通过列表或数组创建Series对象
代码
# data参数表示数据index参数表示数据的索引标签
# 如果没有指定index属性默认使用数字索引
ser1 pd.Series(data[320, 180, 300, 405], index[一季度, 二季度, 三季度, 四季度])
ser1输出
一季度 320
二季度 180
三季度 300
四季度 405
dtype: int64方法2通过字典创建Series对象。
代码
# 字典中的键就是数据的索引标签字典中的值就是数据
ser2 pd.Series({一季度: 320, 二季度: 180, 三季度: 300, 四季度: 405})
ser2输出
一季度 320
二季度 180
三季度 300
四季度 405
dtype: int64索引和切片
跟数组一样Series对象也可以进行索引和切片操作不同的是Series对象因为内部维护了一个保存索引的数组所以除了可以使用整数索引通过位置检索数据外还可以通过自己设置的索引标签获取对应的数据。
使用整数索引
代码
print(ser2[0], ser[1], ser[2], ser[3])
ser2[0], ser2[3] 350, 360
print(ser2)输出
320 180 300 405
一季度 350
二季度 180
三季度 300
四季度 360
dtype: int64提示如果要使用负向索引必须在创建Series对象时通过index属性指定非数值类型的标签。 使用自定义的标签索引
代码
print(ser2[一季度], ser2[三季度])
ser2[一季度] 380
print(ser2)输出
350 300
一季度 380
二季度 180
三季度 300
四季度 360
dtype: int64切片操作
代码
print(ser2[1:3])
print(ser2[二季度:四季度])输出
二季度 180
三季度 300
dtype: int64
二季度 500
三季度 500
四季度 520
dtype: int64代码
ser2[1:3] 400, 500
ser2输出
一季度 380
二季度 400
三季度 500
四季度 360
dtype: int64花式索引
代码
print(ser2[[二季度, 四季度]])
ser2[[二季度, 四季度]] 500, 520
print(ser2)输出
二季度 400
四季度 360
dtype: int64
一季度 380
二季度 500
三季度 500
四季度 520
dtype: int64布尔索引
代码
ser2[ser2 500]输出
二季度 500
三季度 500
四季度 520
dtype: int64####属性和方法
Series对象的常用属性如下表所示。
属性说明dtype / dtypes返回Series对象的数据类型hasnans判断Series对象中有没有空值at / iat通过索引访问Series对象中的单个值loc / iloc通过一组索引访问Series对象中的一组值index返回Series对象的索引is_monotonic判断Series对象中的数据是否单调is_monotonic_increasing判断Series对象中的数据是否单调递增is_monotonic_decreasing判断Series对象中的数据是否单调递减is_unique判断Series对象中的数据是否独一无二size返回Series对象中元素的个数values以ndarray的方式返回Series对象中的值
Series对象的方法很多我们通过下面的代码为大家介绍一些常用的方法。
统计相关的方法
Series对象支持各种获取描述性统计信息的方法。
代码
# 求和
print(ser2.sum())
# 求均值
print(ser2.mean())
# 求最大
print(ser2.max())
# 求最小
print(ser2.min())
# 计数
print(ser2.count())
# 求标准差
print(ser2.std())
# 求方差
print(ser2.var())
# 求中位数
print(ser2.median())Series对象还有一个名为describe()的方法可以获得上述所有的描述性统计信息如下所示。
代码
ser2.describe()输出
count 4.000000
mean 475.000000
std 64.031242
min 380.000000
25% 470.000000
50% 500.000000
75% 505.000000
max 520.000000
dtype: float64提示因为describe()返回的也是一个Series对象所以也可以用ser2.describe()[mean]来获取平均值。 如果Series对象有重复的值我们可以使用unique()方法获得去重之后的Series对象可以使用nunique()方法统计不重复值的数量如果想要统计每个值重复的次数可以使用value_counts()方法这个方法会返回一个Series对象它的索引就是原来的Series对象中的值而每个值出现的次数就是返回的Series对象中的数据在默认情况下会按照出现次数做降序排列。
代码
ser3 pd.Series(data[apple, banana, apple, pitaya, apple, pitaya, durian])
ser3.value_counts()输出
apple 3
pitaya 2
durian 1
banana 1
dtype: int64代码
ser3.nunique()输出
4数据处理的方法
Series对象的isnull()和notnull()方法可以用于空值的判断代码如下所示。
代码
ser4 pd.Series(data[10, 20, np.NaN, 30, np.NaN])
ser4.isnull()输出
0 False
1 False
2 True
3 False
4 True
dtype: bool代码
ser4.notnull()输出
0 True
1 True
2 False
3 True
4 False
dtype: boolSeries对象的dropna()和fillna()方法分别用来删除空值和填充空值具体的用法如下所示。
代码
ser4.dropna()输出
0 10.0
1 20.0
3 30.0
dtype: float64代码
# 将空值填充为40
ser4.fillna(value40)输出
0 10.0
1 20.0
2 40.0
3 30.0
4 40.0
dtype: float64代码
# backfill或bfill表示用后一个元素的值填充空值
# ffill或pad表示用前一个元素的值填充空值
ser4.fillna(methodffill)输出
0 10.0
1 20.0
2 20.0
3 30.0
4 30.0
dtype: float64需要提醒大家注意的是dropna()和fillna()方法都有一个名为inplace的参数它的默认值是False表示删除空值或填充空值不会修改原来的Series对象而是返回一个新的Series对象来表示删除或填充空值后的数据系列如果将inplace参数的值修改为True那么删除或填充空值会就地操作直接修改原来的Series对象那么方法的返回值是None。后面我们会接触到的很多方法包括DataFrame对象的很多方法都会有这个参数它们的意义跟这里是一样的。
Series对象的mask()和where()方法可以将满足或不满足条件的值进行替换如下所示。
代码
ser5 pd.Series(range(5))
ser5.where(ser5 0)输出
0 NaN
1 1.0
2 2.0
3 3.0
4 4.0
dtype: float64代码
ser5.where(ser5 1, 10)输出
0 10
1 10
2 2
3 3
4 4
dtype: int64代码
ser5.mask(ser5 1, 10)输出
0 0
1 1
2 10
3 10
4 10
dtype: int64Series对象的duplicated()方法可以帮助我们找出重复的数据而drop_duplicates()方法可以帮我们删除重复数据。
代码
ser3.duplicated()输出
0 False
1 False
2 True
3 False
4 True
5 True
6 False
dtype: bool代码
ser3.drop_duplicates()输出
0 apple
1 banana
3 pitaya
6 durian
dtype: objectSeries对象的apply()和map()方法非常重要它们可以用于数据处理把数据映射或转换成我们期望的样子这个操作在数据分析的数据准备阶段非常重要。
代码
ser6 pd.Series([cat, dog, np.nan, rabbit])
ser6输出
0 cat
1 dog
2 NaN
3 rabbit
dtype: object代码
ser6.map({cat: kitten, dog: puppy})输出
0 kitten
1 puppy
2 NaN
3 NaN
dtype: object代码
ser6.map(I am a {}.format, na_actionignore)输出
0 I am a cat
1 I am a dog
2 NaN
3 I am a rabbit
dtype: object代码
ser7 pd.Series([20, 21, 12], index[London, New York, Helsinki])
ser7输出
London 20
New York 21
Helsinki 12
dtype: int64代码
ser7.apply(np.square)输出
London 400
New York 441
Helsinki 144
dtype: int64代码
ser7.apply(lambda x, value: x - value, args(5, ))输出
London 15
New York 16
Helsinki 7
dtype: int64排序和取头部值的方法
Series对象的sort_index()和sort_values()方法可以用于对索引和数据的排序排序方法有一个名为ascending的布尔类型参数该参数用于控制排序的结果是升序还是降序而名为kind的参数则用来控制排序使用的算法默认使用了quicksort也可以选择mergesort或heapsort如果存在空值那么可以用na_position参数空值放在最前还是最后默认是last代码如下所示。
代码
ser8 pd.Series(data[35, 96, 12, 57, 25, 89],
index[grape, banana, pitaya, apple, peach, orange]
)
# 按值从小到大排序
ser8.sort_values()输出
pitaya 12
peach 25
grape 35
apple 57
orange 89
banana 96
dtype: int64代码
# 按索引从大到小排序
ser8.sort_index(ascendingFalse)输出
pitaya 12
peach 25
orange 89
grape 35
banana 96
apple 57
dtype: int64如果要从Series对象中找出元素中最大或最小的“Top-N”实际上是不需要对所有的值进行排序的可以使用nlargest()和nsmallest()方法来完成如下所示。
代码
# 值最大的3个
ser8.nlargest(3)输出
banana 96
orange 89
apple 57
dtype: int64代码
# 值最小的2个
ser8.nsmallest(2)输出
pitaya 12
peach 25
dtype: int64绘制图表
Series对象有一个名为plot的方法可以用来生成图表如果选择生成折线图、饼图、柱状图等默认会使用Series对象的索引作为横坐标使用Series对象的数据作为纵坐标。
首先导入matplotlib中pyplot模块并进行必要的配置。
import matplotlib.pyplot as plt# 配置支持中文的非衬线字体默认的字体无法显示中文
plt.rcParams[font.sans-serif] [SimHei, ]
# 使用指定的中文字体时需要下面的配置来避免负号无法显示
plt.rcParams[axes.unicode_minus] False创建Series对象并绘制对应的柱状图。
ser9 pd.Series({一季度: 400, 二季度: 520, 三季度: 180, 四季度: 380})
# 通过Series对象的plot方法绘图kindbar表示绘制柱状图
ser9.plot(kindbar, color[r, g, b, y])
# x轴的坐标旋转到0度中文水平显示
plt.xticks(rotation0)
# 在柱状图的柱子上绘制数字
for i in range(4):plt.text(i, ser9[i] 5, ser9[i], hacenter)
# 显示图像
plt.show()绘制反映每个季度占比的饼图。
# autopct参数可以配置在饼图上显示每块饼的占比
ser9.plot(kindpie, autopct%.1f%%)
# 设置y轴的标签显示在饼图左侧的文字
plt.ylabel(各季度占比)
plt.show()