Python数据分析--Pandas知识点(二)

本文主要是总结学习pandas过程中用到的函数和方法, 在此记录, 防止遗忘.

Python数据分析--Pandas知识点(一)

下面将是在知识点一的基础上继续总结.

13. 简单计算

新建一个数据表df

1 import pandas as pd
2
3 df = pd.DataFrame({"地区": ["A区","B区", "C区"],
4                    "前半年销量": [3500, 4500,3800],
5                    "后半年销量": [3000, 6000,5000],
6                    "单价": [10, 18, 15]})
7 df

13.1 加法计算

有两种方式, 一种是利用add()函数: a.add(b) 表示a与b之和, 另一种是直接利用加法运算符号"+"

1 #第一种方式: 利用add()函数
2 # df["总销量"] = df["前半年销量"].add(df["后半年销量"])
3 #第二种方式: "+"
4 df["总销量"] = df["前半年销量"] + df["后半年销量"]
5 df

两者运算的结果都是相同的:

对于累加求和上述两种方法同样适用, 还有一种方式就是采用apply()函数, 参考文档: https://blog.csdn.net/luckarecs/article/details/72869051

这里介绍apply(func, axis = 0)函数的两个参数, apply()函数官方文档: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.apply.html?highlight=apply#pandas.DataFrame.apply

第一个参数func就是指用于每行或者每列的函数, 这里将采用lambda函数: 接收任意多个参数并返回单个计算结果.

第二个参数axis=0则表示计算行与行的数据, axis=1则表示计算列与列的数据

1 #由于地区不能参与运算, 因此在df1数据表中删除地区
2 df1 = df.drop(["地区","单价"], axis = 1, inplace = False)
3 #对df1数据表进行累加运算, 随后添加到df表中.
4 df["总销量"] = df1.apply(lambda x: x.sum(), axis = 1)
5 df

1 #删除地区和单价,分别计算前半年与后半年的三个地区总和.
2 df2 = df.drop(["地区","单价"], axis = 1, inplace = False)
3 #利用apply函数计算之后,添加至数据表中
4 df.loc["Sum"] = df2.apply(lambda x: x.sum(), axis = 0 )
5 df

13.2 减法运算

同样有两种方式: 一种是采用sub()函数, A.sub(B)表示A-B, 另一种是采用减法运算符 "-"

1 #函数法: 注意A.sub(B)表示A-B
2 df["销量增长"] = df["后半年销量"].sub(df["前半年销量"])
3 #运算符: "-"
4 df["销量增长"] = df["后半年销量"] - df["前半年销量"]
5 df

两种方式, 同样的结果:

13.3 乘法运算

同样是两种方式: 一种是采用mul()函数: A.mul(B)表示: A与B之积, 另一种则是乘法运算符 "*"

1 #函数法: A.mul(B)
2 df["前半年销售额"] = df["前半年销量"].mul(df["单价"])
3 #运算符: "*"
4 df["后半年销售额"] = df["后半年销量"] * df["单价"]
5 df

13.4 除法运算

同样是两种: 一种是采用div()函数: A.div(B)表示: A除以B, 第二种则是采用除法运算符"/"

1 #函数法
2 df["前半年销量1"] = df["前半年销量"].div(100)
3 #运算符法
4 df["前半年销量2"] = df["前半年销量"] / 1000
5 df

13.5 其他运算

13.5.1 取整和取余

1 #取整符号: "//"
2 df["后半年销量1"] = df["后半年销量"] // 1000
3 #取余符号: "%"
4 df["前半年销量1"] = df["前半年销量"] // 100 % 10
5 df

13.5.2 聚合运算

采用聚合函数对一组数据进行运算, 并返回单个值, 比如最大值max()函数, 最小值min()函数, 平均值mean()函数

1 #求前半年销量最大值
2 df1 = df["前半年销量"].max()
3 #求后半年销量最小值
4 df2 = df["后半年销量"].min()
5 #求单价的平均值
6 df3 = df["单价"].mean()
7 df1, df2 ,df3
(4500, 3000, 14.333333333333334)

14. 0-1标准化

0-1标准化是对原始数据进行线性变换, 使其结果映射成[0,1]区间的值, 计算公式为: 新数据 = (原数据 - 最小值) / (最大值 - 最小值)

1 import pandas as pd
2 df = pd.DataFrame({"地区": ["A区","B区", "C区", "D区", "E区", "F区"],
3                    "销量": [3500, 4500,3800,3000, 6000,5000]})
4 #利用公式对原始数据进行0-1标准化处理
5 df["0-1"] = (df["销量"] - df["销量"].min()) / (df["销量"].max() - df["销量"].min())
6 df

15. 数据分组

数据分组是根据统计研究的需求, 对原始数据按照某种标准划分为不同的组别. 主要目的是观察数据的分布特征. 在数据分组后再计算出各组中数据出现的的频数, 最终形成频数分布表.

pandas中数据分组采用的函数是cut(x, bins, right = True, labels = None)函数:

第一个参数x指的是要分组的数据

第二个参数bins指的是划分标准, 也就是定义组的上限与下限

第三个参数right = True表示右边闭合, 左边不闭合; 当right = False时表示右边不闭合, 左边闭合, 默认为True.

第四个参数则是自定义分组的内容

更多cut()函数相关参考官方文档: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.cut.html?highlight=cut#pandas.cut

1 import pandas as pd
2 df = pd.DataFrame({"地区": ["A区","B区", "C区", "D区", "E区", "F区", "G区"],
3                    "单价": [ 8 , 20, 15, 7, 34, 25, 30]})
4 #对单价进行编组: (5,15),(15,25),(25,35)
5 bins = [5, 15, 25, 35]
6 #利用cut()函数对单价进行分组, 并添加至原数据表中
7 df["分组"] = pd.cut(df.单价, bins)
8 df

自定义labels:

1 import pandas as pd
2 df = pd.DataFrame({"地区": ["A区","B区", "C区", "D区", "E区", "F区", "G区"],
3                    "单价": [ 8 , 20, 15, 7, 34, 25, 30]})
4 bins = [5, 15, 25, 35]
5 #自定义labels
6 labels = ["15以下", "15到25", "25以上"]
7 df["分组"] = pd.cut(df.单价, bins, labels = labels)
8 df

16. 日期转换

日期转换是指将字符类型转换成日期格式.

16.1 to_datetime方法

可使用to_datetime(arg, format = None)函数转换

第一个参数arg则是需要转化的字符串, 比如"2018/09/01"

第二个参数format则是原字符串中日期的格式, 比如"2018/09/01"的格式为 "%Y/%m/%d"

常用的格式有: %y表示两位数的年份, %Y表示四位数的年份, %m表示月份, %d表示月中的某一天, %H表示24小时制时数, %I表示12小时制时数, %M表示分钟, %S表示秒

to_datetime()函数官方文档: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.to_datetime.html?highlight=to_datetime#pandas.to_datetime

1 import pandas as pd
2 df = pd.DataFrame({"name":["A","B","D"],
3                   "BirthDate": ["2011/10/20","2009/3/5","2010/5/6"]})
4 #转成日期格式
5 df["BD"] = pd.to_datetime(df.BirthDate,format = "%Y/%m/%d")
6 df

1 #查看数据类型
2 df.dtypes

16.2 datetime.strptime()方法

借助datetime模块中datetime类的strptime()方法, 将字符类型转化为日期格式.

strptime(date_string, format)方法中有两个参数, 第一个参数则是要转化的字符串, 第二个参数则为字符串中日期的格式

1 import pandas as pd
2 from datetime import datetime
3 df = pd.DataFrame({"name":["A","B","D"],
4                   "BirthDate": ["2011/10/20","2009/3/5","2010/5/6"]})
5 #转化为日期格式
6 df["BD"] = df["BirthDate"].apply(lambda x: datetime.strptime(x, "%Y/%m/%d"))
7 df

17. 日期格式化

日期格式化就是将日期按照指定的格式输出成字符类型, 这里借助datetime模块中datetime类的strftime()方法实现:

1 import pandas as pd
2 from datetime import datetime
3 df = pd.DataFrame({"name":["A","B","D"],
4                   "BirthDate": ["2011/10/20","2009/3/5","2010/5/6"]})
5 #转化为日期格式
6 df["BD"] = df["BirthDate"].apply(lambda x: datetime.strptime(x, "%Y/%m/%d"))
7 #日期格式化
8 df["BD1"] = df["BD"].apply(lambda x: datetime.strftime(x, "%d-%m-%Y %H:%M:%S"))
9 df

18.日期抽取

从日期格式中抽取日期的部分内容, 比如抽取年份, 月份等. 语法: 转换为日期格式的列.dt.要抽取的属性.

 1 import pandas as pd
 2 from datetime import datetime
 3 df = pd.DataFrame({"name":["A","B","D"],
 4                   "BirthDate": ["2011/10/20","2009/3/5","2010/5/6"]})
 5 df["BD"] = df["BirthDate"].apply(lambda x: datetime.strptime(x, "%Y/%m/%d"))
 6 df["year"] = df["BD"].dt.year
 7 df["month"] = df["BD"].dt.month
 8 df["day"] = df["BD"].dt.day
 9 df["hour"] = df["BD"].dt.hour
10 df["minute"] = df["BD"].dt.minute
11 df["second"] = df["BD"].dt.second
12 df["weekday"] = df["BD"].dt.weekday
13 df

以上是本次的学习总结, 后续会持续更新...

原文地址:https://www.cnblogs.com/star-zhao/p/9715307.html

时间: 2024-09-30 15:28:06

Python数据分析--Pandas知识点(二)的相关文章

Python数据分析--Pandas知识点(三)

本文主要是总结学习pandas过程中用到的函数和方法, 在此记录, 防止遗忘. Python数据分析--Pandas知识点(一) Python数据分析--Pandas知识点(二) 下面将是在知识点一, 二的基础上继续总结. 前面所介绍的都是以表格的形式中展现数据, 下面将介绍Pandas与Matplotlib配合绘制出折线图, 散点图, 饼图, 柱形图, 直方图等五大基本图形. Matplotlib是python中的一个2D图形库, 它能以各种硬拷贝的格式和跨平台的交互式环境生成高质量的图形,

Python数据分析 Pandas模块 基础数据结构与简介(一)

pandas 入门 简介 pandas 组成 = 数据面板 + 数据分析工具 poandas 把数组分为3类 一维矩阵:Series 把ndarray强大在可以存储任意数据类型可以专门处理时间数据 二维矩阵:DataFrame 三维面板数据:Panel 背景:为金融产品数据分析创建的,对时间序列支持非常好! 数据结构 导入pandas模块 import pandas as pd 读取csv文件,数据类型就是二维矩阵 DataFrame df = pd.read_csv('路径')type(df)

Python数据分析-Pandas

在学习了Numpy后,进行数据科学计算,为何还要使用Pandas呢?其实原因就是效率高,那为何Pandas效率比numpy要高呢?其实Pandas和Numpy还是有着很大的关系的,Pandas本身是依赖numpy的,而ndarray在内存里占据这一段连续的内存空间,任何改变ndarray长度的操作都势必让所有value改变内存中的位置因此在某种程度上,Numpy操作效率还是比较慢的.但是Pandas并不是处理所有的数据都是效率很高的,那么一般情况下处理以下的数据比较友好: Pandas适合处理多

python数据分析Numpy(二)

Numpy (Numerical Python) 高性能科学计算和数据分析的基础包: ndarray,多维数组(矩阵),具有矢量运算能力,快速.节省空间: 矩阵运算,无需循环,可以完成类似Matlab中的矢量运算: 线性代数.随机送生成: ndarray ,N维数组对象(矩阵) 所有元素必须是相同类型 ndim属性,维度个数 shape属性,各维度大小 dtype属性,数据类型 代码示例: import numpy # 生成指定维度的随机多维数据(两行三列) data = numpy.rando

python数据分析pandas中的DataFrame数据清洗

pandas中的DataFrame中的空数据处理方法: 方法一:直接删除 1.查看行或列是否有空格(以下的df为DataFrame类型,axis=0,代表列,axis=1代表行,以下的返回值都是行或列索引加上布尔值)• isnull方法 • 查看行:df.isnull().any(axis=1)  • 查看列:df.isnull().any(axis=0)• notnull方法:• 查看行:df.notnull().all(axis=1)• 查看列:df.notnull().all(axis=0

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

在这个用 Python 和 Pandas 实现数据分析的教程中, 我们将明确一些 Pandas 基础知识. 加载到 Pandas Dataframe 的数据形式可以很多, 但是通常需要能形成行和列的数据集. 所以可以是如下的 dictionary 的形式: web_stats = {'Day':[1,2,3,4,5,6], 'Visitors':[43,34,65,56,29,76], 'Bounce Rate':[65,67,78,65,45,52]} 我们可以通过如下方式把这个 dictio

Python 数据分析(一) 本实验将学习 pandas 基础,数据加载、存储与文件格式,数据规整化,绘图和可视化的知识

第1节 pandas 回顾 第2节 读写文本格式的数据 第3节 使用 HTML 和 Web API 第4节 使用数据库 第5节 合并数据集 第6节 重塑和轴向旋转 第7节 数据转换 第8节 字符串操作 第9节 绘图和可视化 pandas 回顾 一.实验简介 学习数据分析的课程,需要同学们掌握好 Python 的语言基础,和对 Numpy 与 Matplotlib 等基本库有一些了解.同学们可以参考学习实验楼的 Python 语言基础教程与 Python 科学计算的课程. pandas 是后面我们

Python 数据分析(二 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识

Python 数据分析(二) 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识 第1节 groupby 技术 第2节 数据聚合 第3节 分组级运算和转换 第4节 透视表和交叉表 第5节 时间序列 第6节 日期的规范.频率以及移动 第7节 时区处理 第8节 时期及算术运算 第9节 重采样及频率转换 第10节 时间序列绘图 groupby 技术 一.实验简介 Python 数据分析(二)需要同学们先行学完 Python 数据分析(一)的课程. 对数据集进行分

Python数据分析与挖掘所需的Pandas常用知识

Python数据分析与挖掘所需的Pandas常用知识 前言Pandas基于两种数据类型:series与dataframe.一个series是一个一维的数据类型,其中每一个元素都有一个标签.series类似于Numpy中元素带标签的数组.其中,标签可以是数字或者字符串.一个dataframe是一个二维的表结构.Pandas的dataframe可以存储许多种不同的数据类型,并且每一个坐标轴都有自己的标签.你可以把它想象成一个series的字典项. Pandas常用知识 一.读取csv文件为dataf