-
打开数据(csv文件、excel文件)
-
查看数据(尺寸信息、查看列名等方法)
-
查看空值
-
众数、中位数填补空值
-
利用循环补全所有列的空值
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数据类型是整型+字符串类型,不能取平均值和中位数,只能用众数来填补
17万+

被折叠的 条评论
为什么被折叠?



