Pandas数据分析全流程——从数据导入到结果输出,这一篇文章就够了

文章比较干,请备好水再看
今天,咱们不讲大道理,直接来点实战——教大家如何从0到1搞定Pandas数据分析的全流程!开干,咱玩的就是真实!
在这里插入图片描述


1. 数据导入——把“脏数据”请进来

首先得把数据请进来。数据来源可能是CSV、Excel,甚至数据库。这里咱们就直接模拟生成一份数据,数据里面充满了各种“坑”:

import pandas as pd
import numpy as np

# 模拟生成数据(注意:这里故意加了缺失值、异常值、重复数据以及格式混乱的日期)
data = {
   
    "姓名": ["张三", "李四", "王五", "赵六", "小明", "小红", "老王", "张三", "赵六"],
    "年龄": [25, 30, 22, np.nan, 29, 26, 28, 25, 200],  # 缺失值 & 异常值
    "工龄": [2, 5, 1, 8, np.nan, 3, -1, 2, 10],          # 缺失值 & 错误数据(负数)
    "薪资": [8000, 12000, 6000, 15000, 10000, 9000, 8500, 8000, 16000],  # 重复行
    "入职日期": ["2022-06-01", "2020/05/15", "2021-09-10", "2019-12-01", 
               "2023/01/01", "2021-08-15", "2018-03-10", "2022-06-01", "2019-12-01"],  # 日期格式混乱
    "部门": ["市场部", "技术部", "市场部", "技术部", "市场部", "人事部", "技术部", "市场部", "财务部"]
}

df = pd.DataFrame(data)
print("导入数据:\n", df)

在这里插入图片描述


以下帮大家简单给出几个读取Excel、csv、数据库的示例代码,方便新手也能快速上手:

读取CSV文件

import pandas as pd

# 读取CSV文件(确保data.csv文件在当前目录下)
df_csv = pd.read_csv('data.csv')
print("CSV数据预览:")
print(df_csv.head())

说明pd.read_csv() 非常好用,直接加载CSV数据。记得检查文件路径哦~


读取Excel文件

import pandas as pd

# 读取Excel文件的第一个工作表
df_excel = pd.read_excel('data.xlsx', sheet_name='Sheet1')
print("Excel数据预览:")
print(df_excel.head())

说明pd.read_excel() 可以指定工作表名(或索引)。


从数据库读取数据

这里用SQLAlchemy作为数据库引擎示例,假设你使用的是SQLite数据库(其他数据库类似,只需更换连接字符串)。

import pandas as pd
from sqlalchemy import create_engine

# 创建数据库引擎(这里使用SQLite数据库,数据库文件为mydatabase.db)
engine = create_engine('sqlite:///mydatabase.db')

# 编写SQL查询语句
query = "SELECT * FROM table_name"

# 读取数据库中的数据
df_db = pd.read_sql(query, engine)
print("数据库数据预览:")
print(df_db.head())

说明pd.read_sql() 可以直接执行SQL语句,将查询结果转成DataFrame,超方便!💡


2. 数据清洗🛁

数据清洗其实就是对症下药,让数据变得干净、标准,便于后续处理。这里主要包括:

2.1 缺失值处理

首先看看哪些地方数据“不完整”:

print("缺失值统计:\n", df.isnull().sum())
缺失值统计:
姓名      0
年龄      1
工龄      1
薪资      0
入职日期   0
部门      0
dtype: int64

通过缺失值统计可以发现年龄和工龄2列分别有1个缺失值。

处理策略:

  • 年龄 缺失值用中位数填充(受极端值影响小)
  • 工龄 缺失值用部门内均值补全(让每个部门的数据更有说服力)
df["年龄"]=df["年龄"].fillna(df["年龄"].median())
df["工龄"]=df["工龄"].fillna(df.groupby("部门")["工龄"].transform("mean"))

在这里插入图片描述

我们可以看到赵六缺失的年龄和

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花小姐的春天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值