企业网站和信息化建设重庆建站模板展示

diannao/2025/10/13 14:15:07/文章来源:
企业网站和信息化建设,重庆建站模板展示,app模板大全,wordpress投票插件wp-polls1.介绍 1.1 Pandas是什么? Pandas是一个基于NumPy的分析结构化数据的工具集#xff0c;NumPy为其提供了高性能的数据处理能力。Pandas被普遍用于数据挖掘和数据分析#xff0c;同时也提供数据清洗、数据I/O、数据可视化等辅助功能。 Github_Star 40k : https://github.com/… 1.介绍 1.1 Pandas是什么? Pandas是一个基于NumPy的分析结构化数据的工具集NumPy为其提供了高性能的数据处理能力。Pandas被普遍用于数据挖掘和数据分析同时也提供数据清洗、数据I/O、数据可视化等辅助功能。 Github_Star 40k : https://github.com/pandas-dev/pandas 中文文档: https://www.pypandas.cn/docs/ 官方文档: https://pandas.pydata.org/docs/getting_started/comparison/index.html 1.2 安装 # 使用Anaconda$ conda install pandas# 使用pip $ pip install pandas 2.数据结构 学习Pandas之前一般都需要先了解下其对应的数据结构方便后面理解和使用,DataFrame(数据框)和Series(序列)是Pandas库中两个最基本、最重要的数据结构。它们提供了灵活且高效的数据操作方法使得数据分析和处理变得更加简单和可行。 Series(序列): 是一种类似于一维数组的数据结构它可以存储任意类型的数据并附带有标签 label这些标签可以用于索引。 Series可以看作是由两个数组组成一个是数据值的数组一个是与之相关的标签的数组。 DataFrame: 是一个表格型的数据结构包含有一组有序的列每列可以是不同的值类型(数值、字符串、布尔型等) DataFrame即有行索引也有列索引可以被看做是由 Series组成的字典。 2.1 Series Series是一个对象其对应的构造函数所需参数如下: def __init__(    self,    dataNone,    indexNone,    dtype: Dtype | None  None,    nameNone,    copy: bool | None  None,    fastpath: bool  False,) 1.参数说明 data: 指的是输入数据当输入数据类型不同时,会有不同的操作,如下: 如果是一个数组如列表或 NumPy 数组那么它将成为 Series 的数据。 如果是一个字典字典的键将成为 Series 的索引字典的值将成为 Series 的数据。 如果是一个标量值它将被广播到整个 Series。 index: 指定Series 的索引;如果不提供将创建默认的整数索引,从0开始。 dtype: 指定Series的数据类型; 如果不提供将自动推断数据类型。 name: 为Series 指定一个名称。 copy: 如果为True则复制输入数据。默认情况下不复制。 注意: Series的所有数据都是同一种数据类型. 2. 使用示例 import numpy as npimport pandas as pdif __name__  __main__:    # -------------- 基于标量创建Series --------------    print(基于标量-默认索引-s_var: \n, pd.Series(18, names_var, dtypenp.float32))    print(基于标量-指定索引-s_var2: \n, pd.Series(18, names_var2, dtypenp.float32, index[小花]))    print(------------------------分割线----------------------------)    # -------------- 基于列表创建Series --------------    list_var  [Go, Python, PHP, Java]    s_list  pd.Series(list_var, names_list)    print(基于列表-默认索引-s_list: \n, s_list)    # 指定索引    index_var  [a, b, c, d]    s_list2  pd.Series(list_var, indexindex_var, names_list2)    print(基于列表-指定索引-s_list2: \n, s_list2)    print(------------------------分割线----------------------------)    # -------------- 基于字典创建Series --------------    dict_var  {a: Go, b: Python, c: PHP, d: Java}    s_dict  pd.Series(dict_var, names_dict)    print(基于字典-s_dict: \n, s_dict)    print(------------------------分割线----------------------------)    # -------------- 基于np创建Series --------------    s_np  pd.Series(np.arange(5, 10), names_np)    print(基于numpy-s_np: \n, s_np)    基于标量-默认索引-s_var:  0    18.0Name: s_var, dtype: float32基于标量-指定索引-s_var2:  小花    18.0Name: s_var2, dtype: float32------------------------分割线----------------------------基于列表-默认索引-s_list:  0        Go1    Python2       PHP3      JavaName: s_list, dtype: object基于列表-指定索引-s_list2:  a        Gob    Pythonc       PHPd      JavaName: s_list2, dtype: object------------------------分割线----------------------------基于字典-s_dict:  a        Gob    Pythonc       PHPd      JavaName: s_dict, dtype: object------------------------分割线----------------------------基于numpy-s_np:  0    51    62    73    84    9Name: s_np, dtype: int64     注意: 当指定索引(index)参数时,需要保证索引的数量和输入数据的数量保持一致否则会报错: ValueError: Length of values (..) does not match length of index (..) 2.2 DataFrame DataFrame可以看作多个Series的集合每个Series都可以拥有各自独立的数据类型因此DataFrame没有自身唯一的数据类型自然也就没有dtype属性了。不过DataFrame多了一个dtypes属性这个属性的类型是Series类。除了dtypes属性DataFrame的values属性、index属性、columns属性也都非常重要。 DataFrame对应的构造函数如下: def __init__(    self,    dataNone,    index: Axes | None  None,    columns: Axes | None  None,    dtype: Dtype | None  None,    copy: bool | None  None,) 1. 参数说明 data: 指的是输入数据当输入数据类型不同时,会有不同的操作,如下: 如果是一个字典字典的值可以是列表、数组或其他字典它们将成为 DataFrame 的列。 如果是一个数组或列表它将被转换为二维数组每一行将成为 DataFrame 的一行。 如果是另一个 DataFrame则将创建一个副本。 index: 指定DataFrame 的索引;如果不提供将创建默认的整数索引,从0开始。 columns: 指定 DataFrame 的列索引。如果不提供将使用字典的键如果数据是字典或整数序列。 dtype: 指定DataFrame的数据类型; 如果不提供将自动推断数据类型。 copy: 如果为True则复制输入数据。默认情况下不复制。 2. 使用示例 import numpy as npimport pandas as pdif __name__  __main__:    # 使用字典创建DataFrame    data_dict  {Name: [Alice, Bob, Charlie],                 Age: [25, 30, 35],                 City: [New York, San Francisco, Los Angeles]}    df_dict  pd.DataFrame(data_dict)    print(1.使用字典创建DataFrame: \n, df_dict)    # 使用NumPy数组创建DataFrame    data_numpy  np.array([[1, Alice], [2, Bob], [3, Charlie]])    df_numpy  pd.DataFrame(data_numpy, columns[ID, Name])    print(2.使用NumPy数组创建DataFrame: \n, df_numpy)    # 使用另一个DataFrame创建DataFrame    data_existing_df  {Name: [Alice, Bob, Charlie],                        Age: [25, 30, 35],                        City: [New York, San Francisco, Los Angeles]}    existing_df  pd.DataFrame(data_existing_df)    # 创建新的DataFrame复制已存在的DataFrame    df_existing_df  pd.DataFrame(existing_df)    print(3.使用DataFrame创建DataFrame:, df_existing_df)    # 属性信息打印    print(# ---------------- 属性信息打印 ----------------)    print(DataFrame.dtypes:\n, df_existing_df.dtypes)    print(DataFrame.values:, df_existing_df.values)    print(DataFrame.index:, df_existing_df.index)    print(DataFrame.columns:, df_existing_df.columns)    1.使用字典创建DataFrame:        Name  Age           City0    Alice   25       New York1      Bob   30  San Francisco2  Charlie   35    Los Angeles2.使用NumPy数组创建DataFrame:    ID     Name0  1    Alice1  2      Bob2  3  Charlie3.使用DataFrame创建DataFrame:       Name  Age           City0    Alice   25       New York1      Bob   30  San Francisco2  Charlie   35    Los Angeles# ---------------- 属性信息打印 ----------------DataFrame.dtypes: Name    objectAge      int64City    objectdtype: objectDataFrame.values: [[Alice 25 New York] [Bob 30 San Francisco] [Charlie 35 Los Angeles]]DataFrame.index: RangeIndex(start0, stop3, step1)DataFrame.columns: Index([Name, Age, City], dtypeobject)     3.基础用法 从数据结构构成上我们知道DataFrame是由多个Series的组成, 在实际使用中也是使用DataFrame的场景居多所以后续主要学习DataFrame数据结构的使用 3.1 准备数据 import pandas as pdif __name__  __main__:    # 使用字典创建DataFrame    data_dict  {        成绩: [90, 88, 80, 95],        年龄: [23, 19, 20, 33],        身高: [175, 165, 170, 173],        体重: [71.5, 50.5, 66.5, 75.3],        城市: [北京, 南京, 上海, 上海],    }    names  [小明, 小英, 李思, 王老五]    data_res  pd.DataFrame(data_dict, indexnames)    print(学员信息:\n, data_res)学员信息:      成绩  年龄   身高    体重  城市小明   90  23  175  71.5  北京小英   88  19  165  50.5  南京李思   80  20  170  66.5  上海王老五  95  33  173  75.3  上海 3.2 访问数据 if __name__  __main__:    # data_res 参考准备数据此处省略....    # 使用head和tail获取头尾数据    head_data  data_res.head(1)    print(------ 第一行: ------\n, data_res.head(1))    print(------ 最后一行: ------\n, data_res.tail(1))    # 类似切片操作    print(------ data_res[1:3]: ------ \n, data_res[1:3])    # 返回某一行    print(------ 返回某一行,小英数据: ------ \n, data_res[小英:小英])    # 返回某一列    print(------ 返回某一列所有城市: ------ \n, data_res[城市])    # 同时选择行和列    print(------ 同时选择行和列小明、李思的成绩和年龄: ------ \n, data_res.loc[[小明, 李思], [成绩, 年龄]])    # 条件选择    print(------ 条件选择| 年龄20: ------ \n, data_res[data_res[年龄]  20])    search_a  data_res[(data_res[城市]  上海)  (data_res[成绩]  80)]    print(------ 条件选择| 城市上海  成绩  80: ------ \n, search_a)    # 访问具体值    print(------ 根据标签,访问具体值-王老五的身高: , data_res.at[王老五, 身高])    print(------ 根据位置,访问具体值-王老五的身高: , data_res.iat[3, 2])        ------ 第一行: ------     成绩  年龄   身高    体重  城市小明  90  23  175  71.5  北京------ 最后一行: ------      成绩  年龄   身高    体重  城市王老五  95  33  173  75.3  上海------ data_res[1:3]: ------      成绩  年龄   身高    体重  城市小英  88  19  165  50.5  南京李思  80  20  170  66.5  上海------ 返回某一行,小英数据: ------      成绩  年龄   身高    体重  城市小英  88  19  165  50.5  南京------ 返回某一列所有城市: ------  小明     北京小英     南京李思     上海王老五    上海Name: 城市, dtype: object------ 同时选择行和列小明、李思的成绩和年龄: ------      成绩  年龄小明  90  23李思  80  20------ 条件选择| 年龄20: ------      成绩  年龄   身高    体重  城市小英  88  19  165  50.5  南京------ 条件选择| 城市上海  成绩  80: ------       成绩  年龄   身高    体重  城市王老五  95  33  173  75.3  上海------ 根据标签,访问具体值-王老五的身高:  173------ 根据位置,访问具体值-王老五的身高:  173 3.3 编辑数据 import pandas as pdif __name__  __main__:    # data_res 参考准备数据此处省略....    # 根据标签变更    print(#-------------- 修改具体值 -------------------)    print(标签赋值--变更前小英年龄:, data_res.at[小英, 年龄])    data_res.at[小英, 年龄]  18    print(标签赋值--变更后小英年龄:, data_res.at[小英, 年龄])    # 根据位置变更    print(位置赋值--变更前小英年龄:, data_res.iat[1, 1])    data_res.iat[1, 1]  24    print(位置赋值--变更后小英年龄:, data_res.iat[1, 1])    print(#-------------- 修改整列值 -------------------)    print(修改整列值--变更前:, data_res[成绩])    data_res[成绩]  100    print(修改整列值--变更后:, data_res[成绩])#-------------- 修改具体值 -------------------标签赋值--变更前小英年龄: 19标签赋值--变更后小英年龄: 18位置赋值--变更前小英年龄: 18位置赋值--变更后小英年龄: 24#-------------- 修改整列值 -------------------修改整列值--变更前: 小明     90小英     88李思     80王老五    95Name: 成绩, dtype: int64修改整列值--变更后: 小明     100小英     100李思     100王老五    100Name: 成绩, dtype: int64     3.4 追加删除 import pandas as pdif __name__  __main__:    # data_res 参考准备数据此处省略....    # 增加一列    data_res[爱好]  [旅游, 游戏, 篮球, 学习]    print(------------------ 增加一列: ------------------ \n , data_res)    # 删除一列    new_data  data_res.drop([城市, 成绩, 体重], axis1)    print(------------------drop 删除多列: ------------------ \n , new_data)    # 使用pd.concat连接两个dataframe    new_row  {成绩: 100, 年龄: 30, 身高: 185, 体重: 80.5, 城市: 蜀国, 爱好: 练武}    new_dataframe  pd.DataFrame([new_row], index[赵云])    data_res_new  pd.concat([data_res, new_dataframe])    print(------------------ 增加行后: ------------------ \n , data_res)    # 使用drop也可以删除行    new_data  data_res_new.drop([小明, 王老五], axis0)    print(------------------drop 删除多行: ------------------ \n , new_data)    ------------------ 增加一列: ------------------        成绩  年龄   身高    体重  城市  爱好小明   90  23  175  71.5  北京  旅游小英   88  19  165  50.5  南京  游戏李思   80  20  170  66.5  上海  篮球王老五  95  33  173  75.3  上海  学习------------------drop 删除多列: ------------------        年龄   身高  爱好小明   23  175  旅游小英   19  165  游戏李思   20  170  篮球王老五  33  173  学习------------------ 增加行后: ------------------        成绩  年龄   身高    体重  城市  爱好小明   90  23  175  71.5  北京  旅游小英   88  19  165  50.5  南京  游戏李思   80  20  170  66.5  上海  篮球王老五  95  33  173  75.3  上海  学习------------------drop 删除多行: ------------------        成绩  年龄   身高    体重  城市  爱好小英   88  19  165  50.5  南京  游戏李思   80  20  170  66.5  上海  篮球赵云  100  30  185  80.5  蜀国  练武     函数说明: drop: 用于删除行或列的函数。它可以在 DataFrame 或 Series 上使用用于删除指定的行或列并返回一个新的对象原始对象保持不变。 axis 参数用于指定是删除行还是列其中 axis0 表示行 axis1 表示列。默认情况下 axis0。 concat: 将数据沿着某个轴进行拼接可以按行拼接垂直拼接或按列拼接水平拼接使用参数 axis 指定拼接的轴 axis0 表示按行拼接垂直拼接 axis1 表示按列拼接水平拼接 默认是按照行拼接。 3.5 排序数据 import pandas as pdif __name__  __main__:    # data_res 参考准备数据此处省略....    # 根据年龄排序    by_age_asc  data_res.sort_values(by年龄, ascendingTrue)    print(-------------------- 根据年龄升序排序(原始数据不变) --------------------:\n, by_age_asc)    # 根据成绩降序排序inplaceTrue会修改原始数据    data_res.sort_values(by成绩, ascendingFalse, inplaceTrue)    print(-------------------- 根据成绩降序排序(修改原始数据) --------------------:\n, data_res)    # 根据多列排序,先按照年龄再根据成绩    by_age_score  data_res.sort_values(by[年龄, 成绩], ascendingFalse)    print(-------------------- 根据多列排序(先按年龄再根据成绩) --------------------:\n, by_age_score)    # 使用rank排序返回当前数据在所属列的排名名次    rank_data  data_res.rank(ascendingFalse)    print(------------- 使用rank排序,返回当前数据在所属列的排名名次 : -------------\n, rank_data)-------------------- 根据年龄升序排序(原始数据不变) --------------------:      成绩  年龄   身高    体重  城市小英   88  19  165  50.5  南京李思   80  20  170  66.5  上海小明   90  23  175  71.5  北京王老五  95  33  173  75.3  上海-------------------- 根据成绩降序排序(修改原始数据) --------------------:      成绩  年龄   身高    体重  城市王老五  95  33  173  75.3  上海小明   90  23  175  71.5  北京小英   88  19  165  50.5  南京李思   80  20  170  66.5  上海-------------------- 根据多列排序(先按年龄再根据成绩) --------------------:      成绩  年龄   身高    体重  城市王老五  95  33  173  75.3  上海小明   90  23  175  71.5  北京李思   80  20  170  66.5  上海小英   88  19  165  50.5  南京------------- 使用rank排序,返回当前数据在所属列的排名名次 : -------------       成绩   年龄   身高   体重   城市王老五  1.0  1.0  2.0  1.0  3.5小明   2.0  2.0  1.0  2.0  2.0小英   3.0  4.0  4.0  4.0  1.0李思   4.0  3.0  3.0  3.0  3.5     函数说明: sort_values 函数用于排序 DataFrame 或 Series ,具体参数如下: def sort_values(    self,    by: IndexLabel,    *,    axis: Axis  0,    ascending: bool | list[bool] | tuple[bool, ...]  True,    inplace: bool  False,    kind: str  quicksort,    na_position: str  last,    ignore_index: bool  False,    key: ValueKeyFunc  None,) - DataFrame | None: by: 指定排序的列名或列名的列表。如果是多个列可以传递一个包含多个列名的列表。按照列表中的列的顺序进行排序。 axis: 指定排序的轴 axis0 表示按行排序 axis1 表示按列排序。默认为 0。 ascending: 指定排序的顺序 True 表示升序 False 表示降序。可以是一个布尔值或布尔值的列表用于指定每个列的排序顺序。默认为 True。 inplace: 如果为 True则在原地修改对象而不返回新对象如果为 False默认则返回一个新对象原对象保持不变。 kind: 指定排序算法的种类可选值有 quicksort(快速排序)、mergesort(归并排序)、heapsort(堆排序);默认为 quicksort。 na_position: 指定缺失值的位置可选值有 first在前和 last在后。默认为 last。 ignore_index: 如果为 True则重新设置索引忽略现有索引。默认为 False。 key: 用于排序的函数可以是函数、类实例或类的方法。如果指定将用该函数的返回值进行排序。 4.数据运算 4.1 数据摘要 import pandas as pdif __name__  __main__:    # 创建DataFrame    data_dict  {        水果: [香蕉, 苹果, 葡萄, 橘子],        进货价: [1.25, 0.56, 3.5, 1.15],        最低价: [1.55, 0.80, 4.0, 2.00],        最高价: [3.45, 1.5, 6.5, 4.15],        数量: [600, 500, 400, 500],    }    fruit_data  pd.DataFrame(data_dict)    print(--------------- 原始数据 -----------------)    print(fruit_data)    print(--------------- 查看数据的统计摘要 -----------------)    print(fruit_data.describe())--------------- 原始数据 -----------------   水果   进货价   最低价   最高价   数量0  香蕉  1.25  1.55  3.45  6001  苹果  0.56  0.80  1.50  5002  葡萄  3.50  4.00  6.50  4003  橘子  1.15  2.00  4.15  500--------------- 查看数据的统计摘要 -----------------           进货价       最低价      最高价          数量count  4.00000  4.000000  4.00000    4.000000mean   1.61500  2.087500  3.90000  500.000000std    1.29302  1.367708  2.06438   81.649658min    0.56000  0.800000  1.50000  400.00000025%    1.00250  1.362500  2.96250  475.00000050%    1.20000  1.775000  3.80000  500.00000075%    1.81250  2.500000  4.73750  525.000000max    3.50000  4.000000  6.50000  600.000000     输出结果说明: count: 非缺失值的数量。 mean: 平均值。 std: 标准差衡量数据的离散程度。 min: 最小值。 25%: 第一四分位数数据中的 25% 的值小于此值。 50%: 中位数第二四分位数数据中的中间值。 75%: 第三四分位数数据中的 75% 的值小于此值。 max: 最大值。 4.2 统计运算 import pandas as pdif __name__  __main__:    # 创建DataFrame    data_dict  {        水果: [香蕉, 苹果, 葡萄, 橘子],        进货价: [1.25, 0.56, 3.5, 1.15],        最低价: [1.55, 0.80, 4.0, 2.00],        最高价: [3.45, 1.5, 6.5, 4.15],        数量: [600, 500, 400, 500],    }    fruit_data  pd.DataFrame(data_dict)    print(--------------- 原始数据 -----------------)    print(fruit_data)    print(--------------- 均值运算 -----------------)    print([数量]这一列均值: , fruit_data[数量].mean())    print([进货价]这一列均值: , fruit_data[进货价].mean())    print(--------------- 极值运算 -----------------)    print([进货价]这一列最小值: , fruit_data[进货价].min())    print([进货价]这一列最大值: , fruit_data[进货价].max())    print(--------------- 累和运算 -----------------)    # 数量和进货价这两列累和运算    print(fruit_data[[数量, 进货价]].cumsum())    print(--------------- 广播运算-数量列减半 -----------------)    fruit_data[数量]  fruit_data[数量] / 2    print(fruit_data)    --------------- 原始数据 -----------------   水果   进货价   最低价   最高价   数量0  香蕉  1.25  1.55  3.45  6001  苹果  0.56  0.80  1.50  5002  葡萄  3.50  4.00  6.50  4003  橘子  1.15  2.00  4.15  500--------------- 均值运算 -----------------[数量]这一列均值:  500.0[进货价]这一列均值:  1.6150000000000002--------------- 极值运算 -----------------[进货价]这一列最小值:  0.56[进货价]这一列最大值:  3.5--------------- 累和运算 -----------------     数量   进货价0   600  1.251  1100  1.812  1500  5.313  2000  6.46--------------- 广播运算-数量列减半 -----------------   水果   进货价   最低价   最高价     数量0  香蕉  1.25  1.55  3.45  300.01  苹果  0.56  0.80  1.50  250.02  葡萄  3.50  4.00  6.50  200.03  橘子  1.15  2.00  4.15  250.0     4.3 自定义函数 apply() 函数的存在可以让我更灵活的处理数据它可以接收一个我们实现的函数然后对数据进行自定义处理具体参数如下: def apply(    self,    func: AggFuncType,    axis: Axis  0,    raw: bool  False,    result_type: Literal[expand, reduce, broadcast] | None  None,    args(),    **kwargs,): func: 要应用的函数。可以是函数、字符串函数名称、 NumPy 函数或字典。 axis: 指定应用函数的轴 axis0 表示按列默认 axis1 表示按行。 raw: 如果为 True则将每一行或列作为一维数组传递给函数。如果为 False默认则将每一行或列作为 Series 传递给函数。 result_type: 指定返回结果的数据类型可以是 expand、reduce、broadcast 或 None。默认为 None。 args: 传递给函数的位置参数。 **kwargs: 传递给函数的关键字参数。 import randomimport pandas as pddef custom_compute(x: pd.Series):        变更指定列信息    :param x:    :return:        # 这里接受的是Series    if x.name  最低价:        return x  random.randint(1, 100) / 100    elif x.name  数量:        return x * 1.5    return xdef total_cost(x: pd.Series):        计算总成本    :param x:    :return:        money  x[进货价] * x[数量]    print({} 进货价:{} 数量:{} 成本:{}.format(x[水果], x[进货价], x[数量], money))    return moneyif __name__  __main__:    # 创建DataFrame    data_dict  {        水果: [香蕉, 苹果, 葡萄, 橘子],        进货价: [1.25, 0.56, 3.5, 1.15],        最低价: [1.55, 0.80, 4.0, 2.00],        最高价: [3.45, 1.5, 6.5, 4.15],        数量: [600, 500, 400, 500],    }    fruit_data  pd.DataFrame(data_dict)    print(--------------- 原始数据 -----------------)    print(fruit_data)    print(--------------- 自定义函数运算:最低价加上随机数数量*1.5 -----------------)    new_data  fruit_data.apply(custom_compute)    print(new_data)    print(--------------- 自定义函数运算:计算变更后的总成本 -----------------)    total_money  new_data.apply(total_cost, axis1).sum()    print(变更后的总成本:, total_money)         --------------- 原始数据 -----------------   水果   进货价   最低价   最高价   数量0  香蕉  1.25  1.55  3.45  6001  苹果  0.56  0.80  1.50  5002  葡萄  3.50  4.00  6.50  4003  橘子  1.15  2.00  4.15  500--------------- 自定义函数运算:最低价加上随机数数量*1.5 -----------------   水果   进货价   最低价   最高价     数量0  香蕉  1.25  1.86  3.45  900.01  苹果  0.56  1.11  1.50  750.02  葡萄  3.50  4.31  6.50  600.03  橘子  1.15  2.31  4.15  750.0--------------- 自定义函数运算:计算变更后的总成本 -----------------香蕉 进货价:1.25 数量:900.0 成本:1125.0苹果 进货价:0.56 数量:750.0 成本:420.00000000000006葡萄 进货价:3.5 数量:600.0 成本:2100.0橘子 进货价:1.15 数量:750.0 成本:862.4999999999999变更后的总成本: 4507.5   4.4 分组运算 通过函数 groupby,可以按照某一列或多列的值将数据集分成多个组并在这些组上应用各种操作。 import randomimport pandas as pdif __name__  __main__:    # 创建DataFrame 科目    names  [小明, 小丽, 小龙, 小花]    dates  [2023-05, 2023-06, 2023-07, 2023-08, 2023-09, 2023-10]    subjects  [语文, 数学, 英语]    rows  5    data_dict  {        姓名: [random.choice(names) for _ in range(rows)],        日期: [random.choice(dates) for _ in range(rows)],        学科: [random.choice(subjects) for _ in range(rows)],        成绩: [random.randint(60, 100) for _ in range(rows)],    }    data  pd.DataFrame(data_dict)    print(-------------- 原始数据 ------------------)    print(data)    print(-------------- 根据姓名分组 ------------------)    for name, group in data.groupby(姓名):        print( 姓名:{}  \n.format(name))        print(group)    print(-------------- 分组后统计总分数 ------------------)    sum_data  data.groupby(姓名)[成绩].sum()    print(sum_data)    print(-------------- 分组后,针对多列执行不同的统计 ------------------)    agg_data  data.groupby(姓名).agg({成绩: [max, mean, min], 学科: count})    print(agg_data)    -------------- 原始数据 ------------------   姓名       日期  学科  成绩0  小丽  2023-05  数学  761  小龙  2023-06  数学  742  小花  2023-09  英语  623  小丽  2023-05  英语  684  小明  2023-10  语文  87-------------- 根据姓名分组 ------------------ 姓名:小丽     姓名       日期  学科  成绩0  小丽  2023-05  数学  763  小丽  2023-05  英语  68 姓名:小明     姓名       日期  学科  成绩4  小明  2023-10  语文  87 姓名:小花     姓名       日期  学科  成绩2  小花  2023-09  英语  62 姓名:小龙     姓名       日期  学科  成绩1  小龙  2023-06  数学  74-------------- 分组后统计总分数 ------------------姓名小丽    144小明     87小花     62小龙     74Name: 成绩, dtype: int64-------------- 分组后,针对多列执行不同的统计 ------------------    成绩              学科   max  mean min count姓名                    小丽  76  72.0  68     2小明  87  87.0  87     1小花  62  62.0  62     1小龙  74  74.0  74     1     本文由 mdnice 多平台发布

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

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

相关文章

网站开发人员需要去做原型吗有多少人自己做电影网站

在 QML 中,几乎所有组件都继承自 Item 类型,因此它们共享一些通用的属性。 QML 组件通用属性 位置和尺寸 x 和 y: 组件在其父元素中的位置坐标 Item {x: 100y: 100 }width 和 height: 组件的宽度和高度 Item {width: 200height: 100 }z: 组件在 Z 轴…

vps除了做网站还能做什么公共资源交易中心主任级别

Aethir,去中心化GPU云基础设施领导者,宣布其备受期待的节点销售。Aethir是一家企业级的以AI和游戏为重点的GPU即服务提供商。Aethir的去中心化云计算基础设施使GPU提供商能够与需要NVIDIA的H100芯片提供强大AI/ML任务支持的企业客户相连接。 此外&#x…

茂名企业做网站视频剪辑培训比较有名的学校

来源:科学的乐园在科幻小说《三体Ⅲ:死神永生》之中,歌者文明“母世界”的宇宙飞船曾经利用宇宙规律武器二向箔来摧毁地球文明,将地球所处的三维世界完全变成了一个二维世界。很多人无法想象,仅仅一个手机大小的物质&a…

wordpress 分类判断长沙seo排名收费

教育 -C语言程序设计-章节资料考试资料-南京师范大学中北学院【】 第一章 单元测试 1、【单选题】对于计算机来说,最后执行的C语言程序是( ) A、源程序 B、目标程序 C、汇编程序 D、可执行程序 参考资料【 】 2、【单选题】以下叙述中正确的是…

做企业网站一般用什么服务器如何做网站 知乎

版本回退 修改代码 添加第一个版本 接下同上,添加多个版本 回退到上一个版本 回到旧版本(建议实际中操作) 版本回退和回到旧版本的区别: 版本回退:就是删除当前版本,回到以前的版本。 回到旧版…

为网站做外链的方式品牌网站建设必在大蝌蚪

上一篇文章呢,我们讲述了JavaScript运算符中的关系运算符和逻辑运算符,那么紧接上一篇的文章我们今天来说说逻辑运算符。引言逻辑运算符不是很难,也不是很多,我们只要记住三个就可以啦!分别是:!…

找潍坊做网站的赣州网站制作公司

目录 一、磁盘介绍 1. 磁盘数据结构 2. 磁盘的接口类型 3. 磁盘在Linux上的表现形式 二、磁盘分区与MBR 1. 分区优缺点 2. 分区方式 3. MBR分区 4. GPT分区 三、文件系统 1. 文件系统的组成 2. 默认的文件系统 3. 文件系统的作用 4. 模拟破坏文件与修复文件 4…

国内免费网站空间网站建设痛点

一、解释MVC和MVVM架构模式 MVC和MVVM都是常见的前端架构模式,用于抽象分离并解决特定问题。这两种模式在结构上具有一定的相似性,但在细节和数据处理方式上存在一些差异。 MVC,即Model-View-Controller,是一种用于应用程序分层…

电子商务网站开发需求文档北京网站搭建服务

1、在主菜单中选择“模型”→“users and roles”→“users”,新增一个user,其中"name"字段就是要添加的模式名。 2、在新增表时,在表属性的“general”页签中选择"owner",选择刚才新增的user,即可…

网站系统名称怎么填如何给自己的网站做seo

文章目录 变量变量的声明变量命名规则变量的类型 常量常量的定义与初始化字面量常量整型常量浮点型常量字符常量常量表达式(constexpr) 大家好,我是 shopeeai,也可以叫我虾皮,中科大菜鸟研究生。今天我们来一起来学习C…

阿里云 iis 多个网站免费的黄冈网站有哪些

摘要 本文聚集于实战,只讲解最实用的知识点,至于支付起源、在线支付发展历程等科普知识,感兴趣的读者可参考其它优秀的支付类书籍或网络上其它优秀的文章。本章内容对大部分专业概念进行了极致简化,以便更好地帮助读者入门。实际…

网站制作教程:初学者建设银行信用卡网站登录

1. 动态的改变记录级别和策略,即修改log4j.properties,不需要重启Web应用,这需要在web.xml中设置一下。2. 把log文件定在 /WEB-INF/logs/ 而不需要写绝对路径。3. 可以把log4j.properties和其他properties一起放在/WEB-INF/ ,而不是Class-Pat…

宁波企业如何建网站网站开发工程师和软件工程

简介 sar(System Activity Reporter 系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘 I/O、CPU 效率、内存使用状…

厦门的商城网站建设网站推广项目

一,思路: 简单的字符串处理,当反转字符串后如果字典序减小了,那么肯定不会再执行反转操作,而是执行操作2,将反转后的字符串拼接(这样必定构造一个回文串),那么之后的操作…

网站和软件建站前端网站页面模板

1.水仙花数 打印出所有"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身. 例:1531的三次方5的三次方3的三次方. 法1: #include<stdio.h> int main() {int i 0;int j 0;int k 0;for (i 1; i < 10; i)//百位{for (j …

门户网站建设教程php在网站开发中的作用

4738 Caocaos Bridges 求无向图的桥中最小的那个&#xff0c;tarjan 4739 Zhuge Liangs Mines 状态压缩暴力 4740 The Donkey of Gui Zhou 求两个点在图上的相遇点&#xff0c;模拟dfs 4741 Save Labman No.004 计算几何&#xff0c;平面上的两条…

建设高校图书馆网站的意义软文代发布

实验内容 实现一个分片 k/v 存储系统&#xff0c;分片指如所有以“a”开头的键可能是一个分片&#xff0c;所有以 “b”开头的键可能是另一个分片。每个副本组仅处理几个分片的 Put、Append 操作&#xff0c;实现并行操作&#xff0c;系统总吞吐量&#xff08;单位时间的放入和…

门户网站设计特点wordpress批量修改标题

问题描述 在训练模型的过程中遇到了apex库的报错IndexError: tuple index out of range导致无法训练。在github查询后找到了解决方法 问题解决 需要修改/apex-master/apex/amp/utils.py这个文件的代码 从93行开始修改 if x in cache:cached_x cache[x]next_functions_ava…

茂名网站制作价格舆情app

yum是一个用于管理rpm包的后台程序&#xff0c;用python写成&#xff0c;可以非常方便的解决rpm的依赖关系。在建立好yum服务器后&#xff0c;yum客户端可以通过 http、ftp方式获得软件包&#xff0c;并使用方便的命令直接管理、更新所有的rpm包&#xff0c;甚至包括kernel的更…

申请免费网站多少钱做淘宝客必须建网站吗

上周&#xff0c;我在斯德哥尔摩的Jfokus 2012上做了一个关于JavaFX的演讲&#xff0c;当时我意识到每次活动都会问三个问题。 似乎有一个普遍的兴趣&#xff0c;所以我尝试在这篇文章中回答他们&#xff08;尽可能的说实话&#xff09;&#xff1a; iPad或其他移动设备上的Jav…