Python数据分析之Pandas的数据加载与预处理

发布时间:2023年12月29日

一、数据分析

数据分析就是让看似杂乱无章的数据产生价值,通过数据的筛选、汇总等等操作将数据背后的信息集中和提炼出来,最终分析出一个结果或预测出事件的变化规律。

二、数据清洗

数据加载与预览

1、去除/填充有缺失的数据

2、去除/修改格式错误或内容错误的数据

3、去除/修改逻辑错误的数据

4、去除不需要的数据

5、关联性验证

三、Pandas简介

Pandas 库是一个基于NumPy的免费、开源的第三方 Python 库,是 Python 数据分析必不可少的工具之一,它为 Python 数据分析提供了高性能,且易于使用的数据结构,即 Series 和 DataFrame。Pandas 自诞生后被应用于众多的领域,比如财务系统、管理系统、金融、统计学、社会科学等。 Pandas享有Python数据分析“三剑客之一”的盛名,已经成为 Python 数据分析的必备高级工具

Pandas 主要是用作提炼数据使用

Numpy 则提供强大的科学计算

Matplotlib 负责数据可视化的操作

四、Pandas基本使用

1、常见格式数据读取

pd.read_excel() ?# 从excel的.xls或.xlsx格式读取表格数据
pd.read_csv() ? ?# 从csv文件读取数据 
pd.read_table() ?# 从txt文件读取数据
pd.read_sql() ? ?# 将sql查询的结果(使用SQLAlchemy)读取为pandas的DataFrame
pd.read_html() ? # 读取网页中的表格数据
pd.read_json() ? # 从json字符串中读取数据
pd.read_xml      # 从xml文件中读取数据

2、常用函数

data.shape ? ? ? # 数据维度,看看数据多少行,多少列
data.head(3) ? ? # 检查头数据
data.info() ? ? ?# 查看数据基本信息
data.dtypes      # 查看数据类型
data.describe() ?# 查看数值数据统计信息
 count:数量统计,此列共有多少有效值
   unipue:不同的值有多少个
   std:标准差
   min:最小值
   25%:四分之一分位数
   50%:二分之一分位数
   75%:四分之三分位数
   max:最大值
   mean:均值

3、数据存储

df.to_csv() 	 	# 存储为csv文件
df.to_excel() 	 	# 存储为excel文件
df.to_html()  	 	# 存储为html文件
df.to_json()  	 	# 存储为json文件
df.to_sql() 	 	# 存储为sql文件

4、查看指定多行、列

data.columns.tolist()
data[1:5]
data[[’ip’,’phone’]]

5、查看指定数据

data.loc[row,columns]??基于标签索引选取数据?前闭后闭

data.iloc[row,columns]?基于整数索引选取数据?前闭后开

6、缺失值检查与处理

data[data.isnull().values] # 查看缺失值

data.dropna() # 删除缺失值

data.fillna() # 填充缺失值

7、缺失值检查处理

data.isna().sum().sum() ?# 检查全部缺失值总数

data.isnull().sum() ? ? ?# 检查每列缺失值

# 将缺失值进行高亮?

(data[data.isnull().any(1) == True]
.style
.highlight_null(null_color='skyblue')
.set_table_attributes('style="font-size: 10px"'))

data1 = data.fillna('*********')?# 填充固定值

data2 = data.fillna(method='bfill')??# 向下填充

# # 均值填充

data3 = data['收益(元)'].fillna(data['收益(元)'].mean())

data3.map(lambda cell: '%.2f' % cell)

8、异常值检查与处理

# 大多数时候,我们是从csv文件中导入的数据,此时Dataframe中对应的时间列是字符串或时间戳的形式
# type(user['create_time'][1])

# 运用pd.to_datetime(),可以将对应的列转换为Pandas中的datetime64类型,便于后期的处理
user['create_time'] = pd.to_datetime(user['create_time'],unit='s')
user['create_time'] = user['create_time'].map(lambda x : pd.to_datetime(x,unit='s'))
type(user['create_time'][1])

# 时间序列的索引。和普通索引一样,调用.loc[row,columns]进行索引
user1 = user.set_index('create_time')
user1.loc['2022-05']
# 2022年5月-2022年7月的数据
user1.loc['2022-05':'2022-07’]

user[‘create_time’].dt.month

9、重复值检查与处理

data[data.duplicated()] # 筛选重复值所在行

data[data.duplicated([‘姓名’])] # 筛选指定列存在重复项所在的行

data.drop_duplicates() # 删除重复值所在行

10、数据修改

修改列名rename()

df.rename(columns={'姓名':'名字','性别':'男女'})

修改行索引set_index()

df.set_index('id',inplace=True) #指定字段,成为索引

df.reset_index(inplace=True) #重置索引

df.drop(['index'])

修改索引名rename_axis()

# 修改索引名字 df.rename_axis('自加索引')

修改某一个值:df.iloc[0,1]='李三'

替换指定的值:

替换值(单值)replace()

将5000.0替换为4444:

替换值(多值)replace()

11、数据删除

1、删除指定行

df.drop(1)

2、删除条件行

删除id=5099.0的行

3、删除列

删除性别这一字段所在的列

4、按列号删除列

文章来源:https://blog.csdn.net/qq_32393893/article/details/135079356
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。