当前位置: 首页 > 后端技术 > Python

数据处理【瑞士军刀pandas攻略】:3.数据汇总与映射

时间:2023-03-26 01:24:02 Python

参考地址:Vitu.AI数据汇总与映射importpandasaspdpd.set_option('max_rows',5)importnumpyasnpmelbourne_data=pd.read_csv('melb_data.csv')melbourne_data.head()汇总函数pandas提供了许多简单的“汇总函数”(非官方名称),它们以某种有用的方式重组数据。例如,考虑describe方法:melbourne_data.Price.describe()该方法生成给定列属性的高级摘要。它是类型感知的,这意味着它的输出根据输入的数据类型而变化。上面的输出只对数字数据有意义;对于字符串数据,这是我们得到的:melbourne_data.Address.describe()如果你想要关于DataFrame或Series中的列的特定简单摘要统计信息,通常有一个有用的pandas函数来实现它。例如,要查看分配点的平均值,我们可以使用均值函数mean:melbourne_data.Price.mean()要查看唯一值列表,我们可以使用唯一函数unique:melbourne_data.Address.unique()要查看唯一值的列表以及它们在数据集中出现的频率,我们可以使用value_counts方法:将它们映射到另一个函数以获取组值。在数据科学中,我们经常需要从现有数据创建新的表示,或者将数据从现在的格式转换为我们希望它在未来成为的格式。映射是完成工作的地方,完成工作非常重要!您将经常使用两种映射方法。Series.map是第一个,稍微简单一些。例如,假设我们想将房价重新计算为当前价格减去均值。我们可以这样做:price_mean=melbourne_data.Price.mean()melbourne_data.Price.map(lambdap:p-price_mean)传递给map的函数应该期望Series中的单个值(上例中的点值),并返回该值的转换版本。map返回一个新系列,其中所有值都由您的函数转换。如果我们想通过在每一行上调用自定义方法来转换整个DataFrame,DataFrame.apply是可行的方法。defremean_price(row):row.Price=row.Price-price_mean返回行转换每一列而不是传递一个函数来转换每一行。请注意,Series.map和DataFrame.apply分别返回新的、转换后的Series和DataFrame。它们不会修改调用它们的原始数据。如果我们查看第一行房价数据,我们可以看到它仍然具有原始点值。melbourne_data.head(1)pandas提供了许多常见的映射操作作为内置函数。例如,这里有一个更快的方法来rebase我们的点列:price_mean=melbourne_data.Price.mean()melbourne_data.Price-price_mean在这段代码中,我们在左边有很多值(所有内容)和单个值在右边(平均)。pandas查看这个表达式并声明我们必须从数据集中的每个值中减去这个平均值。如果我们在等长系列之间执行这些操作,pandas也会理解该怎么做。例如,在数据集中组合县和地址信息的一种简单方法是执行以下操作:melbourne_data.Suburb+"-"+melbourne_data.Address这些运算符比map或apply更快,因为它们使用pandas内置的加速。所有标准的Python运算符(>、<、==等)都以这种方式工作。但是,它们不像map或apply那样灵活,它们可以做更高级的事情,例如应用条件逻辑,这不能仅通过加法和减法来完成。原文地址:数据处理【SwissArmyKnifePandasGuide】:3.数据汇总与映射