Python数据分析之Pandas第二练:十分钟掌握DataFrame运算

liftword3个月前 (04-08)技术文章18

背景

在上一篇《Python数据分析之Pandas第一练:十分钟学会创建、查看和选择数据》中,我们练习了Pandas数据对象Series和DataFrame的基础操作,本篇将再用十分钟的时间继续相关运算的练习。

运算

Pandas主要使用值np.nan表示缺失的数据。默认情况下不包含在计算中。这次的练习对象还是使用上篇中生成的df,详细的生成过程可以到上篇文章中回顾。

df1 = df.reindex(index=dates[0:4], columns=list(df.columns) + ["E"])
df1
df1.loc[dates[0] : dates[1], "E"] = 1
df1.dropna(how="any")  # 丢弃所有缺少数据的行
df1.fillna(value=5)  # 填充丢失值
pd.isna(df1)  # 获取nan值的布尔判断结果 

df.mean(0)  # 默认值为0,按列进行统计
df.mean(1)  # 1按行进行统计

当运算对象具有不同的维度并且需要形状一致时,Pandas会自动按照指定的维数进行广播.

s = pd.Series([1, 3, 5, np.nan, 6, 8], index=dates).shift(2)
df.sub(s, axis="index")  # 计算df - s
df.apply(np.cumsum)  # 将NumPy的累加函数应用到df上
df.apply(lambda x: x.max() - x.min())  #  计算最大、最小值之差
s.value_counts()  # 统计每类值的频数

str属性中配备了一些序列数据(Series)的字符串处理方法,使得在数组的每个元素上操作时非常简单。需要注意的是,默认情况下,str中的模式匹配通常使用正则表达式(在某些情况下总是使用它们)。

s = pd.Series(["A", "B", "C", "Aaba", "Baca", np.nan, "CABA", "dog", "cat"])
s.str.lower()  # 将s的值转变为小写,空值不生效

Pandas提供了各种功能,可以在join / merge-type操作的情况下将串联和数据框对象与各种索引和关系代数功能的设置逻辑相结合。

df = pd.DataFrame(np.random.randn(10, 4))
pieces = [df[:3], df[3:7], df[7:]]
pd.concat(pieces)
left = pd.DataFrame({"key": ["foo", "foo"], "lval": [1, 2]})
right = pd.DataFrame({"key": ["foo", "foo"], "rval": [4, 5]})
pd.merge(left, right, on="key")
left1 = pd.DataFrame({"key": ["foo", "bar"], "lval": [1, 2]})
right1 = pd.DataFrame({"key": ["foo", "bar"], "rval": [4, 5]})
pd.merge(left1, right1, on="key")

聚合操作涉及到下面步骤中的一个或者多个内容:

  • 按照条件把数据分成多个组
  • 对每个数据组单独用函数处理
  • 把处理后的数据结果整合到一起
df = pd.DataFrame( 
    { 
         "A": ["foo", "bar", "foo", "bar", "foo", "bar", "foo", "foo"], 
         "B": ["one", "one", "two", "three", "two", "two", "one", "three"], 
         "C": np.random.randn(8), 
         "D": np.random.randn(8) 
    }
    )
df.groupby("A").sum()
df.groupby(["A", "B"]).sum()

熟练使用Excel的伙伴们会觉得这个操作跟透视表如出一辙,确实是这样的。

一起练习吧

以上就是这次练习的主要内容,大家一起练习来吧。如有问题可随时留言交流~~~

相关文章

极简Python数据分析入门:从工具准备到建模实战全攻略!

以下是一份极简Python数据分析入门指南,帮助新手快速掌握核心技能:1. 工具准备安装必备库:推荐使用 Jupyter Notebook(交互式编程环境)进行数据分析。2. 数据加载使用 panda...

「Python数据分析」Pandas基础,通过索引选择数据

原始数据处理过程1、通过函数,生成上图所示的原始数据集2、选择某一单元格中的值3、交换数据集中A、B列的值4、选择A列和B列,形成新的数据集处理过程1新建文件夹和Python笔记本源程序,导入pand...

小白零基础学习路线,完整的自学python数据分析的学习路线

数据分析师已经存在多年了,但是,对该职业的需求从2018年开始,对数据分析师的需求猛增,目前数据分析师的前景已然非常好!预计到2025年,「数据分析师」将成为需求最大的工作之一。由于这种现象,我们看到...

进阶数据分析该怎么学习Python和SQL

1、先明白需求数据分析及运营管理是一种数据驱动的能力,而并非仅仅学学Python或者SQL这么简单。当然,我能理解你的意思,想学习数据分析工具。Python和SQL各有所长,搭配使用是最好的。2、如何...

整理了这么久的利用Python进行数据分析必备手册终于出炉了

当谈到用数据解决问题时,我经常用这样的语言去诠释:“如果你不能量化它,你就不能理解它;如果不理解就不能控制他,不能控制也就不能改变它”。数据无处不在,信息时代的最主要特征就是“数据处理”,数据分析正以...

「Python数据分析」Pandas基础,筛选数据利器:布尔索引

我们在处理数据的时候,数据筛选是一个重要的过程。利用布尔索引,我们可以选择需要的数据区间。布尔索引,是利用各种不等式,以及与或非操作,来对数据区间进行选择。在pandas中,与操作,对应的是 & 这个...