[Numpy] np.select

 美图欣赏2022/07/28

np.select(condlist, choicelist, default=0) 

condlist:条件列表,元素是布尔型数组

choicelist:列表,数组元素

default:当所有条件都不满足时,用default值(默认值)填上

注意: condlist, choicelist的长度必须一致,每一个条件都要进行一次元素选择或者操作 

import pandas as pd
import numpy as np
 
df = pd.DataFrame(data={'语文':[50,90,70,78,60],
                        '数学':[59,80,60,75,69],
                        '英语':[61,95,65,80,59]},
                  index=['Harry','Andy','Rita','Lee','Jack'])
# 多条件判断,有多个条件可以使用np.select
conditions = [(df['语文']>=60)&(df['数学']>=60)&(df['英语']>=60),
              (df['语文']<60)&(df['数学']>=60)&(df['英语']>=60),
              (df['语文']>=60)&(df['数学']<60)&(df['英语']>=60),
              (df['语文']>=60)&(df['数学']>=60)&(df['英语']<60),
              (df['语文']>=60)&(df['数学']<60)&(df['英语']<60),
              (df['语文']<60)&(df['数学']>=60)&(df['英语']<60),
              (df['语文']<60)&(df['数学']<60)&(df['英语']>=60),
              (df['语文']<60)&(df['数学']<60)&(df['英语']<60)]
results = ['合格','不合格','不合格','不合格','不合格','不合格','不合格','不合格']
# 生成'评级'字段
df['评级'] = np.select(conditions,results,default='不合格')

df

### 使用 NumPy 对 CSV 文件进行数据分析及计算统计指标 #### 加载 CSV 数据 可以利用 `numpy.genfromtxt` 或者 `numpy.loadtxt` 函数来加载 CSV 文件中的数据。这些函数支持指定分隔符、跳过头部行等功能,非常适合用于结构化数据的导入。 以下是使用 `numpy.genfromtxt` 的示例代码: ```python import numpy as np # 假设有一个名为 'data.csv' 的文件,其中包含逗号分隔的数据 data = np.genfromtxt('data.csv', delimiter=',', skip_header=1, dtype=None, encoding='utf-8') print(data) ``` 上述代码中,`delimiter` 参数指定了字段之间的分隔符,`skip_header` 跳过了文件的第一行(通常是表头),而 `dtype=None` 表明自动推断每列的数据类型[^1]。 --- #### 计算基本统计指标 一旦数据被成功加载到内存中,就可以使用 NumPy 提供的各种内置方法来进行统计分析。例如: ##### 1. **最大值和最小值** 可以通过 `np.max()` 和 `np.min()` 来分别求解数组中的最大值和最小值。 ```python high_column = data[:, 4].astype(float) # 假设第5列为高价格列 low_column = data[:, 5].astype(float) # 假设第6列为低价格列 highest_value = np.max(high_column) lowest_value = np.min(low_column) print(f"Highest Value: {highest_value}") print(f"Lowest Value: {lowest_value}") ``` ##### 2. **均值与标准差** 对于数值型数据,可以用 `np.mean()` 和 `np.std()` 分别计算平均值和标准差。 ```python closing_prices = data[:, 6].astype(float) # 假设第7列为收盘价列 mean_closing_price = np.mean(closing_prices) std_deviation = np.std(closing_prices) print(f"Mean Closing Price: {mean_closing_price}") print(f"Standard Deviation of Prices: {std_deviation}") ``` ##### 3. **中位数与方差** 同样地,也可以用 `np.median()` 和 `np.var()` 来获得中位数和方差。 ```python median_closing_price = np.median(closing_prices) variance_of_prices = np.var(closing_prices) print(f"Median Closing Price: {median_closing_price}") print(f"Variance of Prices: {variance_of_prices}") ``` --- #### 处理特定数据类型的子集 如果只需要处理某种特定数据类型的列,则可结合 Pandas 中的 `select_dtypes` 方法先筛选出目标列再转为 NumPy 数组继续操作。不过,在纯 NumPy 场景下可以直接通过布尔索引来完成类似任务。 ```python filtered_data = data[data.dtype.names.index('specific_column_name')] numeric_columns_only = filtered_data.astype(float) max_numeric_val = np.max(numeric_columns_only) min_numeric_val = np.min(numeric_columns_only) print(f"Max Numeric Column Value: {max_numeric_val}") print(f"Min Numeric Column Value: {min_numeric_val}") ``` 这里假设原始数据已经包含了混合类型的信息,并且我们只关心那些能够转换成浮点数的部分[^4]。 --- #### 绘制热力图 (Optional) 当涉及到多维关系展示时,可能还会需要用到可视化手段辅助理解数据间联系。下面给出一段创建简单热度矩阵的例子作为补充说明: ```python pivot_table = np.reshape(filtered_data[:9],(3,3)) plt.figure(figsize=(8,6)) sns.heatmap(pivot_table,cmap="YlGnBu",annot=True) plt.title("Sample Heatmap from Reshaped Data") plt.show() ``` 注意这里的 reshape 是为了演示目的随机选取前九条记录并重组成了一个三乘三方阵形式;实际应用当中应当依据具体业务逻辑合理设计聚合维度[^3]. 综上所述,以上便是关于如何运用 Numpy 实现从 csv 文件读取直至执行基础描述性统计全过程的一个概览介绍[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值