Python酷库之旅-第三方库Pandas(051)

目录

一、用法精讲

186、pandas.Series.is_monotonic_increasing属性

186-1、语法

186-2、参数

186-3、功能

186-4、返回值

186-5、说明

186-6、用法

186-6-1、数据准备

186-6-2、代码示例

186-6-3、结果输出

187、pandas.Series.is_monotonic_decreasing属性

187-1、语法

187-2、参数

187-3、功能

187-4、返回值

187-5、说明

187-6、用法

187-6-1、数据准备

187-6-2、代码示例

187-6-3、结果输出

188、pandas.Series.value_counts方法

188-1、语法

188-2、参数

188-3、功能

188-4、返回值

188-5、说明

188-6、用法

188-6-1、数据准备

188-6-2、代码示例

188-6-3、结果输出

189、pandas.Series.align方法

189-1、语法

189-2、参数

189-3、功能

189-4、返回值

189-5、说明

189-6、用法

189-6-1、数据准备

189-6-2、代码示例

189-6-3、结果输出

190、pandas.Series.case_when方法

190-1、语法

190-2、参数

190-3、功能

190-4、返回值

190-5、说明

190-6、用法

190-6-1、数据准备

190-6-2、代码示例

190-6-3、结果输出

二、推荐阅读

1、Python筑基之旅

2、Python函数之旅

3、Python算法之旅

4、Python魔法之旅

5、博客个人主页

一、用法精讲

186、pandas.Series.is_monotonic_increasing属性
186-1、语法
# 186、pandas.Series.is_monotonic_increasing属性
property pandas.Series.is_monotonic_increasing
Return boolean if values in the object are monotonically increasing.Returns:
bool
186-2、参数

        无

186-3、功能

        用于判断系列中的值是否按非递减顺序排列。

186-4、返回值

        返回一个布尔值,如果系列中的值是单调递增的(即每个值都大于或等于前一个值),返回True;如果系列中的值不是单调递增的,返回False。

186-5、说明

        在数据分析过程中,该属性可以用来快速检查数据的趋势,例如时间序列数据是否按时间递增、价格数据是否持续上升等。

186-6、用法
186-6-1、数据准备
186-6-2、代码示例
# 186、pandas.Series.is_monotonic_increasing属性
import pandas as pd
# 创建一个单调递增的系列
data_increasing = pd.Series([1, 2, 3, 4, 5])
# 判断系列中的值是否单调递增
is_monotonic_increasing = data_increasing.is_monotonic_increasing
print(f"系列值是否单调递增: {is_monotonic_increasing}") 
# 创建一个非单调递增的系列
data_not_increasing = pd.Series([1, 3, 2, 4, 5])
# 判断系列中的值是否单调递增
is_monotonic_increasing = data_not_increasing.is_monotonic_increasing
print(f"系列值是否单调递增: {is_monotonic_increasing}")  
186-6-3、结果输出
# 186、pandas.Series.is_monotonic_increasing属性
# 系列值是否单调递增: True
# 系列值是否单调递增: False
187、pandas.Series.is_monotonic_decreasing属性
187-1、语法
# 187、pandas.Series.is_monotonic_decreasing属性
property pandas.Series.is_monotonic_decreasing
Return boolean if values in the object are monotonically decreasing.Returns:
bool
187-2、参数

        无

187-3、功能

        用于判断系列中的值是否按递减顺序排列。

187-4、返回值

        返回一个布尔值,如果系列中的值是单调递减的(即每个值都小于或等于前一个值),返回True;如果系列中的值不是单调递减的,返回False

187-5、说明

        在数据分析过程中,该属性可以用来快速检查数据的趋势,例如库存数据是否持续减少、销售数据是否下降等。

187-6、用法
187-6-1、数据准备
187-6-2、代码示例
# 187、pandas.Series.is_monotonic_decreasing属性
import pandas as pd
# 创建一个单调递减的系列
data_decreasing = pd.Series([5, 4, 3, 2, 1])
# 判断系列中的值是否单调递减
is_monotonic_decreasing = data_decreasing.is_monotonic_decreasing
print(f"系列值是否单调递减: {is_monotonic_decreasing}")
# 创建一个非单调递减的系列
data_not_decreasing = pd.Series([5, 3, 4, 2, 1])
# 判断系列中的值是否单调递减
is_monotonic_decreasing = data_not_decreasing.is_monotonic_decreasing
print(f"系列值是否单调递减: {is_monotonic_decreasing}")
187-6-3、结果输出
# 187、pandas.Series.is_monotonic_decreasing属性
# 系列值是否单调递减: True
# 系列值是否单调递减: False
188、pandas.Series.value_counts方法
188-1、语法
# 188、pandas.Series.value_counts方法
pandas.Series.value_counts(normalize=False, sort=True, ascending=False, bins=None, dropna=True)
Return a Series containing counts of unique values.The resulting object will be in descending order so that the first element is the most frequently-occurring element. Excludes NA values by default.Parameters:
normalize
bool, default False
If True then the object returned will contain the relative frequencies of the unique values.sort
bool, default True
Sort by frequencies when True. Preserve the order of the data when False.ascending
bool, default False
Sort in ascending order.bins
int, optional
Rather than count values, group them into half-open bins, a convenience for pd.cut, only works with numeric data.dropna
bool, default True
Don’t include counts of NaN.Returns:
Series
188-2、参数

188-2-1、normalize(可选,默认值为False)如果设置为True,返回每个唯一值的相对频率;否则返回绝对值的计数。

188-2-2、sort(可选,默认值为True)如果设置为True,结果按计数值排序;如果设置为False,则按唯一值本身排序。

188-2-3、ascending(可选,默认值为False)如果设置为True,结果按升序排序;如果设置为False(默认值),则按降序排序。

188-2-4、bins(可选,默认值为None)如果设置为整数,则会将数据分成相应数量的区间,并返回每个区间的计数。

188-2-5、dropna(可选,默认值为True)如果设置为True(默认值),则不计算NaN值;如果设置为False,则包括NaN值的计数。

188-3、功能

188-3-1、计数每个唯一值的出现次数:默认情况下,返回每个唯一值的绝对频率。

188-3-2、排序:默认按计数值降序排列,但可以通过参数设置为升序或按唯一值本身排序。

188-3-3、相对频率:通过设置normalize=True,可以返回每个唯一值的相对频率(比例)。

188-3-4、分箱:通过设置bins参数,可以将数据分成若干区间,并返回每个区间的计数。

188-3-5、处理缺失值:默认情况下,NaN值不包括在计数中,但可以通过设置dropna=False包括NaN值的计数。

188-4、返回值

        返回一个pandas.Series对象,索引是原始Series中的唯一值(或区间),值是每个唯一值(或区间)的计数。

188-5、说明

        使用场景:

188-5-1、探索性数据分析(EDA):在数据分析的初始阶段,使用value_counts()可以快速了解数据的分布情况。例如,分析客户年龄分布、产品销售量分布等。

188-5-2、数据清洗:在处理缺失值和重复值时,可以使用value_counts()找出异常值或频次较低的值,从而帮助清洗数据。

188-5-3、分类数据分析:对于分类变量(如性别、地区、职业等),可以使用value_counts()计算每个类别的频次,以便进一步的统计分析或可视化。

188-5-4、数据验证:在数据验证过程中,使用value_counts()可以检查数据是否符合预期分布,例如检查试验组和对照组的样本量是否均衡。

188-5-5、异常检测:通过value_counts()计算频次,识别出频次异常的值,有助于发现数据中的潜在问题或异常情况。

188-5-6、特征工程:在特征工程中,可以使用value_counts()生成新的特征,例如,计算某个特征的出现次数,并将其作为新的特征添加到数据集中。

188-5-7、文本数据分析:在自然语言处理任务中,可以使用value_counts()统计词频,分析文本数据的关键词或常用词。

188-5-8、时间序列分析:对于时间序列数据,可以使用value_counts()统计不同时间段内事件的发生频次,例如统计每月的销售订单数量。

188-5-9、用户行为分析:在用户行为分析中,使用value_counts()可以统计用户的操作频次,例如统计用户登录、点击、购买等行为的次数。

188-6、用法
188-6-1、数据准备
188-6-2、代码示例
# 188、pandas.Series.value_counts方法
# 188-1、基本用法
import pandas as pd
data = pd.Series([1, 2, 2, 3, 3, 3, 4, 4, 4, 4])
counts = data.value_counts()
print(counts, end='\n\n')# 188-2、返回相对频率
import pandas as pd
data = pd.Series([1, 2, 2, 3, 3, 3, 4, 4, 4, 4])
counts_normalized = data.value_counts(normalize=True)
print(counts_normalized, end='\n\n')# 188-3、按升序排列
import pandas as pd
data = pd.Series([1, 2, 2, 3, 3, 3, 4, 4, 4, 4])
counts_ascending = data.value_counts(ascending=True)
print(counts_ascending, end='\n\n')# 188-4、分箱计数
import pandas as pd
data = pd.Series([1, 2, 2, 3, 3, 3, 4, 4, 4, 4])
counts_bins = data.value_counts(bins=3)
print(counts_bins, end='\n\n')# 188-5、包括NaN值的计数
import pandas as pd
data_with_nan = pd.Series([1, 2, 2, 3, 3, 3, 4, 4, 4, 4, None])
counts_with_nan = data_with_nan.value_counts(dropna=False)
print(counts_with_nan)
188-6-3、结果输出
# 188、pandas.Series.value_counts方法
# 188-1、基本用法
# 4    4
# 3    3
# 2    2
# 1    1
# Name: count, dtype: int64# 188-2、返回相对频率
# 4    0.4
# 3    0.3
# 2    0.2
# 1    0.1
# Name: proportion, dtype: float64# 188-3、按升序排列
# 1    1
# 2    2
# 3    3
# 4    4
# Name: count, dtype: int64# 188-4、分箱计数
# (3.0, 4.0]      4
# (0.996, 2.0]    3
# (2.0, 3.0]      3
# Name: count, dtype: int64# 188-5、包括NaN值的计数
# 4.0    4
# 3.0    3
# 2.0    2
# 1.0    1
# NaN    1
# Name: count, dtype: int64
189、pandas.Series.align方法
189-1、语法
# 189、pandas.Series.align方法
pandas.Series.align(other, join='outer', axis=None, level=None, copy=None, fill_value=None, method=_NoDefault.no_default, limit=_NoDefault.no_default, fill_axis=_NoDefault.no_default, broadcast_axis=_NoDefault.no_default)
Align two objects on their axes with the specified join method.Join method is specified for each axis Index.Parameters:
otherDataFrame or Series
join{‘outer’, ‘inner’, ‘left’, ‘right’}, default ‘outer’
Type of alignment to be performed.left: use only keys from left frame, preserve key order.right: use only keys from right frame, preserve key order.outer: use union of keys from both frames, sort keys lexicographically.inner: use intersection of keys from both frames, preserve the order of the left keys.axisallowed axis of the other object, default None
Align on index (0), columns (1), or both (None).levelint or level name, default None
Broadcast across a level, matching Index values on the passed MultiIndex level.copybool, default True
Always returns new objects. If copy=False and no reindexing is required then original objects are returned.NoteThe copy keyword will change behavior in pandas 3.0. Copy-on-Write will be enabled by default, which means that all methods with a copy keyword will use a lazy copy mechanism to defer the copy and ignore the copy keyword. The copy keyword will be removed in a future version of pandas.You can already get the future behavior and improvements through enabling copy on write pd.options.mode.copy_on_write = Truefill_valuescalar, default np.nan
Value to use for missing values. Defaults to NaN, but can be any “compatible” value.method{‘backfill’, ‘bfill’, ‘pad’, ‘ffill’, None}, default None
Method to use for filling holes in reindexed Series:pad / ffill: propagate last valid observation forward to next valid.backfill / bfill: use NEXT valid observation to fill gap.Deprecated since version 2.1.limitint, default None
If method is specified, this is the maximum number of consecutive NaN values to forward/backward fill. In other words, if there is a gap with more than this number of consecutive NaNs, it will only be partially filled. If method is not specified, this is the maximum number of entries along the entire axis where NaNs will be filled. Must be greater than 0 if not None.Deprecated since version 2.1.fill_axis{0 or ‘index’} for Series, {0 or ‘index’, 1 or ‘columns’} for DataFrame, default 0
Filling axis, method and limit.Deprecated since version 2.1.broadcast_axis{0 or ‘index’} for Series, {0 or ‘index’, 1 or ‘columns’} for DataFrame, default None
Broadcast values along this axis, if aligning two objects of different dimensions.Deprecated since version 2.1.Returns:
tuple of (Series/DataFrame, type of other)
Aligned objects.
189-2、参数

189-2-1、other(必须)Series或DataFrame,表示需要与调用该方法的对象对齐的另一个对象。

189-2-2、join(可选,默认值为'outer'){'outer', 'inner', 'left', 'right'},指定对齐方式。

189-2-2-1、'outer': 返回两个对象的并集,包含所有索引。

189-2-2-2、'inner': 返回两个对象的交集,仅包含共同的索引。

189-2-2-3、'left': 返回左侧对象的所有索引,缺失的右侧对象的索引用NaN填充。

189-2-2-4、'right': 返回右侧对象的所有索引,缺失的左侧对象的索引用NaN填充。

189-2-3、axis(可选,默认值为None)整数或字符串,仅在DataFrame中有效,指明对齐的轴,0表示行,1表示列。

189-2-4、level(可选,默认值为None)整数或字符串,如果对象是多层索引,可以使用此参数指定对齐的层次。

189-2-5、copy(可选,默认值为None)如果为True,则返回的对象会复制;如果为False,则返回的对象可能共享数据;如果为None,则根据数据的情况决定是否复制。

189-2-6、fill_value(可选,默认值为None)标量值,如果需要填充缺失的值,可以指定一个填充值。

189-2-7、method(可选)字符串,指定用于填充缺失数据的方法,如'pad'(前向填充)或者'backfill'(后向填充),如果不提供,默认不填充。

189-2-8、limit(可选)整数,用于限制填充的最大数量。

189-2-9、fill_axis(可选)整数或字符串,指定用于填充缺失值的轴,仅在DataFrame中有效。

189-2-10、broadcast_axis(可选)整数或字符串,指定用于广播操作的轴。

189-3、功能

        对齐两个对象,使它们的索引对齐,并允许用户选择如何处理缺失的值。

189-4、返回值

        返回一个元组,包含对齐后的两个对象,形如(left, right)

  • left是对齐后的左侧对象。
  • right是对齐后的右侧对象。

        如果fill_value被指定,而某些索引无法对齐,则缺失的部分将被填充为指定的值。

189-5、说明

        使用场景:

189-5-1、数据合并与连接:在处理来自不同数据源的数据时,可能需要将它们合并成一个统一的格式,使用align可以确保所有数据都以相同的索引对齐,从而方便后续处理。

189-5-2、时间序列分析:在时间序列数据中,不同的时间序列可能会有不同的时间索引,使用align方法可以对齐它们,使得每个时间点的值能够方便地进行比较和计算。

189-5-3、数据补齐与填充:当某些数据缺失时,可以使用align方法结合fill_value进行补齐,确保后续分析时不会因为缺失值而出现错误。

189-5-4、计算与比较:在进行计算(如差异计算、比例计算等)时,需要对齐各个数据列的索引,使用align方法可以保证参与计算的数据都是对齐的,从而得到合理的结果。

189-5-5、处理多层索引:对于具有多层索引的Series或DataFrame,可以利用level参数对特定层次进行对齐,便于复杂数据结构的操作。

189-5-6、数据清理:在清理数据时,需要处理不一致的索引,在删减或重塑数据时,使用align可以确保所有列都有相同的索引结构。

189-6、用法
189-6-1、数据准备
189-6-2、代码示例
# 189、pandas.Series.align方法
# 189-1、合并不同客户的销售数据
import pandas as pd
# 创建两个不同的销售数据 Series
sales_jan = pd.Series([200, 300], index=['Alice', 'Bob'])
sales_feb = pd.Series([150, 400, 250], index=['Alice', 'Charlie', 'Bob'])
# 使用align方法对齐两个Series
aligned_jan, aligned_feb = sales_jan.align(sales_feb, join='outer', fill_value=0)
print("对齐后的1月销售数据:")
print(aligned_jan)
print("\n对齐后的2月销售数据:")
print(aligned_feb)
# 计算每个客户在1月和2月的销售总额
total_sales = aligned_jan + aligned_feb
print("\n客户总销售额:")
print(total_sales, end='\n\n')# 189-2、时间序列对比
import pandas as pd
# 创建两个时间序列数据Series
temperature = pd.Series([22, 24, 23], index=pd.date_range('2023-01-01', periods=3))
humidity = pd.Series([30, 32], index=pd.date_range('2023-01-01', periods=2))
# 使用align方法对齐两个时间序列
aligned_temp, aligned_hum = temperature.align(humidity, join='inner')
print("对齐后的温度数据:")
print(aligned_temp)
print("\n对齐后的湿度数据:")
print(aligned_hum)
# 计算温度与湿度的关系
correlation = aligned_temp.corr(aligned_hum)
print(f"\n温度与湿度的相关性:{correlation}", end='\n\n')# 189-3、处理多层索引
import pandas as pd
# 创建多层索引的Series
index = pd.MultiIndex.from_tuples([('A', 1), ('A', 2), ('B', 1), ('B', 2)])
data1 = pd.Series([10, 20, 30, 40], index=index)
index2 = pd.MultiIndex.from_tuples([('A', 1), ('B', 1), ('B', 3)])
data2 = pd.Series([5, 25, 15], index=index2)
# 对齐多层索引的Series
aligned_data1, aligned_data2 = data1.align(data2, join='outer', fill_value=0)
print("对齐后的第一组数据:")
print(aligned_data1)
print("\n对齐后的第二组数据:")
print(aligned_data2)
# 计算对齐后数据的和
sum_data = aligned_data1 + aligned_data2
print("\n对齐后数据的和:")
print(sum_data, end='\n\n')# 189-4、数据清理与补齐
import pandas as pd
# 创建带有缺失值的Series
data1 = pd.Series([1, 2, None, 4], index=['A', 'B', 'C', 'D'])
data2 = pd.Series([None, 2, 3, None], index=['A', 'B', 'C', 'E'])
# 对齐两个Series,使用fill_value填充缺失值
aligned_data1, aligned_data2 = data1.align(data2, join='outer', fill_value=0)
print("对齐后的数据1:")
print(aligned_data1)
print("\n对齐后的数据2:")
print(aligned_data2)
# 计算补齐后的总和
total = aligned_data1 + aligned_data2
print("\n补齐后的数据总和:")
print(total, end='\n\n')# 189-5、数据比较
import pandas as pd
# 创建两个带有不同客户的销售数据Series
sales_last_month = pd.Series([300, 500, 200], index=['Alice', 'Bob', 'Charlie'])
sales_this_month = pd.Series([350, 450, 300, 100], index=['Alice', 'Bob', 'David', 'Charlie'])
# 对齐两个Series
aligned_last_month, aligned_this_month = sales_last_month.align(sales_this_month, join='outer', fill_value=0)
print("上个月的销售数据:")
print(aligned_last_month)
print("\n这个月的销售数据:")
print(aligned_this_month)
# 计算销售增长
sales_growth = aligned_this_month - aligned_last_month
print("\n销售增长(这个月 - 上个月):")
print(sales_growth, end='\n\n')# 189-6、索引重命名与对齐
import pandas as pd
# 创建两个带有不同索引的Series
data_a = pd.Series([5, 10, 15], index=['x', 'y', 'z'])
data_b = pd.Series([1, 2, 3], index=['y', 'z', 'w'])
# 重命名索引以便于理解
data_a.index = ['Item_A1', 'Item_A2', 'Item_A3']
data_b.index = ['Item_B1', 'Item_B2', 'Item_B3']
# 使用align方法对齐
aligned_a, aligned_b = data_a.align(data_b, join='outer', fill_value=0)
print("对齐后的数据A:")
print(aligned_a)
print("\n对齐后的数据B:")
print(aligned_b)
# 计算A和B的和
total_data = aligned_a + aligned_b
print("\n对齐后数据A和B的和:")
print(total_data, end='\n\n')# 189-7、填补缺失数据
import pandas as pd
# 创建一个带有缺失值的Series
series_a = pd.Series([1, 2, 3, None], index=['A', 'B', 'C', 'D'])
series_b = pd.Series([None, 2, None, 4, 5], index=['A', 'B', 'C', 'E', 'F'])
# 对齐两个Series,使用fill_value填充缺失值
aligned_a, aligned_b = series_a.align(series_b, join='outer', fill_value=0)
print("对齐后的数据A:")
print(aligned_a)
print("\n对齐后的数据B:")
print(aligned_b)
# 计算合并后的序列总和
filled_data = aligned_a + aligned_b
print("\n填补缺失值后的数据总和:")
print(filled_data, end='\n\n')# 189-8、在数据科学项目中的应用
import pandas as pd
# 创建Product价格数据和销量数据
prices = pd.Series([100, 150, 200], index=['Product_A', 'Product_B', 'Product_C'])
sales = pd.Series([10, 5, 8, 3], index=['Product_A', 'Product_B', 'Product_D', 'Product_C'])
# 对齐价格和销量数据
aligned_prices, aligned_sales = prices.align(sales, join='outer', fill_value=0)
print("对齐后的价格数据:")
print(aligned_prices)
print("\n对齐后的销量数据:")
print(aligned_sales)
# 计算每个产品的销售收入
revenue = aligned_prices * aligned_sales
print("\n每个产品的销售收入:")
print(revenue, end='\n\n')
189-6-3、结果输出
# 189、pandas.Series.align方法
# 189-1、合并不同客户的销售数据
# 对齐后的1月销售数据:
# Alice      200.0
# Bob        300.0
# Charlie      0.0
# dtype: float64
# 
# 对齐后的2月销售数据:
# Alice      150
# Bob        250
# Charlie    400
# dtype: int64
# 
# 客户总销售额:
# Alice      350.0
# Bob        550.0
# Charlie    400.0
# dtype: float64# 189-2、时间序列对比
# 对齐后的温度数据:
# 2023-01-01    22
# 2023-01-02    24
# Freq: D, dtype: int64
# 
# 对齐后的湿度数据:
# 2023-01-01    30
# 2023-01-02    32
# Freq: D, dtype: int64
# 
# 温度与湿度的相关性:0.9999999999999999# 189-3、处理多层索引
# 对齐后的第一组数据:
# A  1    10.0
#    2    20.0
# B  1    30.0
#    2    40.0
#    3     0.0
# dtype: float64
# 
# 对齐后的第二组数据:
# A  1     5.0
#    2     0.0
# B  1    25.0
#    2     0.0
#    3    15.0
# dtype: float64
# 
# 对齐后数据的和:
# A  1    15.0
#    2    20.0
# B  1    55.0
#    2    40.0
#    3    15.0
# dtype: float64# 189-4、数据清理与补齐
# 对齐后的数据1:
# A    1.0
# B    2.0
# C    0.0
# D    4.0
# E    0.0
# dtype: float64
# 
# 对齐后的数据2:
# A    0.0
# B    2.0
# C    3.0
# D    0.0
# E    0.0
# dtype: float64
# 
# 补齐后的数据总和:
# A    1.0
# B    4.0
# C    3.0
# D    4.0
# E    0.0
# dtype: float64# 189-5、数据比较
# 上个月的销售数据:
# Alice      300.0
# Bob        500.0
# Charlie    200.0
# David        0.0
# dtype: float64
# 
# 这个月的销售数据:
# Alice      350
# Bob        450
# Charlie    100
# David      300
# dtype: int64
# 
# 销售增长(这个月 - 上个月):
# Alice       50.0
# Bob        -50.0
# Charlie   -100.0
# David      300.0
# dtype: float64# 189-6、索引重命名与对齐
# 对齐后的数据A:
# Item_A1     5.0
# Item_A2    10.0
# Item_A3    15.0
# Item_B1     0.0
# Item_B2     0.0
# Item_B3     0.0
# dtype: float64
# 
# 对齐后的数据B:
# Item_A1    0.0
# Item_A2    0.0
# Item_A3    0.0
# Item_B1    1.0
# Item_B2    2.0
# Item_B3    3.0
# dtype: float64
# 
# 对齐后数据A和B的和:
# Item_A1     5.0
# Item_A2    10.0
# Item_A3    15.0
# Item_B1     1.0
# Item_B2     2.0
# Item_B3     3.0
# dtype: float64# 189-7、填补缺失数据
# 对齐后的数据A:
# A    1.0
# B    2.0
# C    3.0
# D    0.0
# E    0.0
# F    0.0
# dtype: float64
# 
# 对齐后的数据B:
# A    0.0
# B    2.0
# C    0.0
# D    0.0
# E    4.0
# F    5.0
# dtype: float64
# 
# 填补缺失值后的数据总和:
# A    1.0
# B    4.0
# C    3.0
# D    0.0
# E    4.0
# F    5.0
# dtype: float64# 189-8、在数据科学项目中的应用
# 对齐后的价格数据:
# Product_A    100.0
# Product_B    150.0
# Product_C    200.0
# Product_D      0.0
# dtype: float64
# 
# 对齐后的销量数据:
# Product_A    10
# Product_B     5
# Product_C     3
# Product_D     8
# dtype: int64
# 
# 每个产品的销售收入:
# Product_A    1000.0
# Product_B     750.0
# Product_C     600.0
# Product_D       0.0
# dtype: float64
190、pandas.Series.case_when方法
190-1、语法
# 190、pandas.Series.case_when方法
pandas.Series.case_when(caselist)
Replace values where the conditions are True.Parameters:
caselistA list of tuples of conditions and expected replacements
Takes the form: (condition0, replacement0), (condition1, replacement1), … . condition should be a 1-D boolean array-like object or a callable. If condition is a callable, it is computed on the Series and should return a boolean Series or array. The callable must not change the input Series (though pandas doesn`t check it). replacement should be a 1-D array-like object, a scalar or a callable. If replacement is a callable, it is computed on the Series and should return a scalar or Series. The callable must not change the input Series (though pandas doesn`t check it).New in version 2.2.0.Returns:
Series
190-2、参数

190-2-1、caselist(必须)一个包含条件和值的列表,每个元素都是一个元组(condition, value),其中,condition是一个返回布尔值的表达式或函数,用于判断条件是否满足;value是当条件满足时返回的值。

190-3、功能

        根据一系列条件来设置Series中每个元素的值,并返回一个新的Series

190-4、返回值

        返回一个新的Series对象。

190-5、说明

        无

190-6、用法
190-6-1、数据准备
190-6-2、代码示例
# 190、pandas.Series.case_when方法
import pandas as pd
c = pd.Series([6, 7, 8, 9], name='c')
a = pd.Series([0, 0, 1, 2])
b = pd.Series([0, 3, 4, 5])
c.case_when(caselist=[(a.gt(0), a), (b.gt(0), b)])
print(c)
190-6-3、结果输出
# 190、pandas.Series.case_when方法
# 0    6
# 1    7
# 2    8
# 3    9
# Name: c, dtype: int64

二、推荐阅读

1、Python筑基之旅
2、Python函数之旅
3、Python算法之旅
4、Python魔法之旅
5、博客个人主页

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/876888.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式人工智能(34-基于树莓派4B的红外传感器、紫外传感器、激光传感器)

这三种光传感器都是不可见光传感器,光是由电场和磁场交替传播而形成的波动现象。光是一种电磁辐射,属于电磁波的一种。下图是电磁波的频谱范围,生活中多数光是看不到的,但是确真实存在,本文介绍几种光传感器&#xff0…

C++从入门到起飞之——友元内部类匿名对象对象拷贝时的编译器优化 全方位剖析!

🌈个人主页:秋风起,再归来~🔥系列专栏:C从入门到起飞 🔖克心守己,律己则安 目录 1、友元 2、内部类 3、 匿名对象 4、对象拷⻉时的编译器优化 5、完结散花 1、友元 • 友元提供…

基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台

在现代招聘领域,数据驱动的决策已成为提升招聘效率和质量的关键因素。基于爬虫技术和机器学习算法,结合Django框架和Bootstrap前端技术,我们开发了一套完整的招聘数据分析与可视化系统。该系统旨在帮助企业从海量招聘信息中提取有价值的数据&…

学习Numpy的奇思妙想

学习Numpy的奇思妙想 本文主要想记录一下,学习 numpy 过程中的偶然的灵感,并记录一下知识框架。 推荐资源:https://numpy.org/doc/stable/user/absolute_beginners.html 💡灵感 为什么 numpy 数组的 shape 和 pytorch 是 tensor 是…

等保2.0测评 — 容器测评对象选取

之前有小伙伴提问到,关于容器到底要测评哪些内容,也就是测评对象的选取。 首先要区分的是容器与容器集群这两个概念。容器集群概念可参考该篇文章。 不使用容器扩展要求情况 当仅使用容器技术时,采用安全通用要求,无需使用容器…

昇思25天学习打卡营第15天|探索 Diffusion 扩散模型:从构建到应用的全过程

目录 环境配置 构建Diffusion模型 位置向量 ResNet/ConvNeXT块 Attention模块 组规一化 条件U-Net 正向扩散 数据准备与处理 训练过程 推理过程 环境配置 首先进行环境配置、库的导入和一些设置操作,具体代码如下: %%capture captured_output …

土体的有效应力原理

土体的有效应力原理 有效应力原则1. 总应力的测定2. 孔隙水压力的测定3. 有效应力的确定 有效应力的重要性 土体中的有效应力原理是卡尔太沙基在1936年提出的重要理论之一。它是总应力和孔隙水压力之间的差值。下面简要说明土壤中有效应力的更多特征和测定。 有效应力原则 有…

人工智能入门第一篇:简单理解GPU和CPU

目录 1,GPU就是显卡吗2,CPU和GPU到底是什么区别3,CUDA是什么4,为什么人工智能离不开GPU 1,GPU就是显卡吗 ‌不是,显卡和‌GPU是两个相关但不完全相同的概念,GPU是显卡的核心部分,但…

Google Test 学习笔记(简称GTest)

文章目录 一、介绍1.1 介绍1.2 教程 二、使用2.1 基本使用2.1.1 安装GTest (下载和编译)2.1.2 编写测试2.1.3 运行测试2.1.4 高级特性2.1.5 调试和分析 2.2 源码自带测试用例2.3 TEST 使用2.3.1 TestCase的介绍2.3.2 TEST宏demo1demo2 2.3.3 TEST_F宏2.3…

wincc 远程和PLC通讯方案

有 5个污水厂 的数据需要集中监控到1个组态软件上,软件是WINCC。每个污水厂监控系统都是独立的,已经投入运行了, 分站也是WINCC 和西门子PLC 。采用巨控远程模块的话,有两种方式:一种是从现场的PLC取数据,一种是从分站…

2019数字经济公测大赛-VMware逃逸

文章目录 环境搭建漏洞点exp 环境搭建 ubuntu :18.04.01vmware: VMware-Workstation-Full-15.5.0-14665864.x86_64.bundle 这里环境搭不成功。。patch过后就报错,不知道咋搞 发现可能是IDA加载后的patch似乎不行对原来的patch可能有影响,重新下了patch&…

【8月EI会议推荐】第四届区块链技术与信息安全国际会议

一、会议信息 大会官网:http://www.bctis.nhttp://www.icbdsme.org/ 官方邮箱:icbctis126.com 组委会联系人:杨老师 19911536763 支持单位:中原工学院、西安工程大学、齐鲁工业大学(山东省科学院)、澳门…

科大讯飞语音转写demo go语言版

上传了一个语音文件,识别效果。 package audioimport ("bytes""crypto/hmac""crypto/md5""crypto/sha1""encoding/base64""encoding/json""fmt""io/ioutil""net/http"…

【图文详解】Spring是如何解决循环依赖的?

Spring是如何解决循环依赖的呢? 很多小伙伴在面试时都被问到过这个问题,刷到过这个题的同学马上就能回答出来:“利用三级缓存”。面试官接着追问:“哪三级缓存呢?用两级行不行呢?” 这时候如果没有深入研究…

Vs2022+QT+Opencv 一些需要注意的地方

要在vs2022创建QT项目,先要安装一个插件Qt Visual Studio Tools,根据个人经验选择LEGACY Qt Visual Studio Tools好一些,看以下内容之前建议先在vs2022中配置好opencv,配置方式建议以属性表的形式保存在硬盘上。 设置QT路径 打开v…

清华计算几何-算法LowBound和ConvexHull(凸包)-GrahamScan

算法复杂度最低界限LowBound 算法求解复杂度是否存在一个最低界限,有时候想尽一切办法优化一个算法,去优化其复杂度,比如 清华计算几何-ConvexHull(凸包)-求极点InTriangle/ToLeft Test-CSDN博客 清华计算几何-ConvexHull(凸包)-求极边_计…

DeFi革命:揭秘去中心化金融的核心技术与实操指南

目录 DeFi(去中心化金融)综述 基本特点 第一,DeFi 是无许可的金融 第二,DeFi 是无门槛的金融 第三,DeFi 是无人驾驶的金融 典型商业模式 闪电贷 MakerDAO 面临的挑战 DeFi技术要点 椭圆曲线签名 EIP-712:…

模拟依赖关系和 AI 是Vue.js测试的下一个前沿领域

Vue.js 是一个流行的 JavaScript 框架,因此,确保其组件按预期工作至关重要:有效,更重要的是,可靠。模拟依赖项是最有效的测试方法之一,我们将在本文中发现。 模拟依赖项的必要性 模拟依赖项是一种对测试施加…

个人定制化形象生成,FaceChain最新模型部署

FaceChain是阿里巴巴达摩院推出的一个开源的人物写真和个人数字形象的AI生成框架。 FaceChain利用了Stable Diffusion模型的文生图功能,并结合人像风格化LoRA模型训练及人脸相关感知理解模型,将输入的图片进行训练后推理输出生成个人写真图像。 FaceCh…

Live555源码阅读笔记:哈希表的实现(C++)

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…