Day04 初识pandas库与缺失数据的补全

  1. 打开数据(csv文件、excel文件)

  2. 查看数据(尺寸信息、查看列名等方法)

  3. 查看空值

  4. 众数、中位数填补空值

  5. 利用循环补全所有列的空值

1.打开数据:

#读取数据
import pandas as pd

data = pd.read_csv('data.csv')
#csv文件:纯文本文件,可以使用文本编辑器进行打开和编辑
#Excel文件:二进制文件,体积偏大

补充:

       实际中给出的文件若为.xlsx文件,需要将其转换为csv文件,具体步骤如下:

       首先,需要创建虚拟环境,打开Anaconda Prompt,终端输入代码,名字可自取,代码如下:

conda create -n mathbuild2 python

        在创建好虚拟环境后要激活虚拟环境,输入代码:

conda activate mathbuild2

        激活虚拟环境后安装包,代码如下:

pip install pandas openpyxl

        安装好后,在pycharm中调用,输入以下代码,即可将文件类型进行转换:

import os
import pandas as pd

def excel_to_csv_all_sheets(excel_file_path, output_prefix=""):
    """
    将Excel文件的所有工作表转换为CSV文件,保存在与Excel文件相同的目录中。

    参数:
    excel_file_path (str): Excel文件的路径
    output_prefix (str): 输出CSV文件的前缀(默认为空字符串)
    """
    try:
        # 获取Excel文件所在的目录
        output_directory = os.path.dirname(excel_file_path)

        # 读取Excel文件中的所有工作表
        excel_data = pd.read_excel(excel_file_path, sheet_name=None)

        # 遍历每个工作表并将其转换为CSV文件
        for sheet_name, data in excel_data.items():
            # 如果指定了前缀,则使用前缀+工作表名称作为文件名,否则仅使用工作表名称
            csv_file_name = f"{output_prefix}{sheet_name}.csv"
            csv_file_path = os.path.join(output_directory, csv_file_name)
            data.to_csv(csv_file_path, index=False)
            print(f"成功将工作表 {sheet_name} 转换为CSV文件 {csv_file_path}")
    except Exception as e:
        print(f"转换失败: {e}")


# 下面是相应的调用函数代码
excel_to_csv_all_sheets('eg_convert.xlsx', output_prefix="my_custom_name_")

        当然也可下载库对.xlsx进行直接读取。

2.查看数据(尺寸信息、查看列名等方法)

#查看数据
#1.数据类型
print(type(data)) #显示具体的类
#<class 'pandas.core.frame.DataFrame'>
#DataFrame是一个二维表格型数据结构(类似 Excel的表格),表示当前数据为为 Pandas 的二维表格

#2.查看行列的信息
data2 = pd.read_excel('data.xlsx')
print(data2.shape)

#3.查看列的属性
print(data2.columns)

#4.数据列的基本统计量
print(data2.describe())

#5.查看列名、非空值、数据类型,即info()函数可以对上述读取信息进行总结
print(data2.info())

#6.读取前几行数据
print(data2.head(10))

3.查看空值

#读取空值
print(data2.isnull())
#其中True表示对应位置的值是缺失值,False表示对应位置的值不是缺失值。

        返回一个布尔类型的表,可进行粗略展示,也可以看每一列缺失值计数

#读取每一列空值
print(data.isnull().sum())

4.众数、中位数填补空值

# 众数填补
# 众数的获取
import pandas as pd

data = pd.read_csv('data.csv')  # 需要重新读取一遍数据
mode = data['Annual Income'].mode()
# mode() 会返回数据中出现频率最高的所有值,如果频次相同,会返回最多每个值。
#一般选用第一个进行填补
mode = mode[0]
print(mode)
# 众数填补
data['Annual Income'].fillna(mode, inplace=True) #有空位的地方为True
# 检查下是否有缺失值,填补完值应当为0
print(data['Annual Income'].isnull().sum())

        也可以使用中位数填补

#中位数填补
import pandas as pd

data = pd.read_csv('data.csv')  # 需要重新读取一遍数据
median_income = data['Annual Income'].median()
print(median_income)
data['Annual Income'].fillna(median_income, inplace=True)
print(data['Annual Income'].isnull().sum())

5.利用循环补全所有列的空值

#五.循环填补空缺数据
#思路:首先,对列进行读取,找出列中的数据是数字的,也就是在[int64,float64]中,再对列中元素进行读取
#     然后求取平均数,如果是空缺的,使用平均数进行填补
#     最后,看空缺位置求值是否为0
for col in data2.columns:
    if data2[col].dtype in ['int64','float64']:
        mean_value = data2[col].mean()
        data2[col] = data2[col].fillna(mean_value)
print(data2.isnull().sum())

#发现Years in current job的返回值为371,没有补全
#但是,Years in current job数据类型是整型+字符串类型,不能取平均值和中位数,只能用众数来填补
mode_value = data2['Years in current job'].mode()[0]
data2['Years in current job']=data2['Years in current job'].fillna(mode_value)
print(data2.isnull().sum())

        Years in current job数据类型是整型+字符串类型,不能取平均值和中位数,只能用众数来填补

@浙大疏锦行

演示了为无线无人机电池充电设计的感应电力传输(IPT)系统 Dynamic Wireless Charging for (UAV) using Inductive Coupling 模拟了为无人机(UAV)量身定制的无线电力传输(WPT)系统。该模型演示了直流电到高频交流电的转换,通过磁共振在气隙中无线传输能量,以及整流回直流电用于电池充电。 系统拓扑包括: 输入级:使用IGBT/二极管开关连接到全桥逆变器的直流电压源(12V)。 开关控制:脉冲发生器以85 kHz(周期:1/85000秒)的开关频率运行,这是SAE J2954无线充电标准的标准频率。 耦合级:使用互感和线性变压器块来模拟具有特定耦合系数的发射(Tx)和接收(Rx)线圈。 补偿:包括串联RLC分支,用于模拟谐振补偿网络(将线圈调谐到谐振频率)。 输出级:桥式整流器(基于二极管),用于将高频交流电转换回直流电,以供负载使用。 仪器:使用示波器块进行全面的电压和电流测量,用于分析输入/输出波形和效率。 模拟详细信息: 求解器:离散Tustin/向后Euler(通过powergui)。 采样时间:50e-6秒。 4.主要特点 高频逆变:模拟85 kHz下IGBT的开关瞬态。 磁耦合:模拟无人机着陆垫和机载接收器之间的松耦合行为。 Power GUI集成:用于专用电力系统离散仿真的设置。 波形分析:预配置的范围,用于查看逆变器输出电压、初级/次级电流和整流直流电压。 5.安装使用 确保您已安装MATLAB和Simulink。 所需工具箱:必须安装Simscape Electrical(以前称为SimPowerSystems)工具箱才能运行sps_lib块。 打开文件并运行模拟。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值