tydocs.pages.devtydocs.pages.dev
网站首页
快速开始
关于作者
  • 在线工具大全
  • 在线ASCII码表
  • 正则表达式调试工具
  • 正则表达式可视化
  • BASE64编解码工具
  • MD5编码工具
  • AES/DES加解密
  • ASCII编解码工具
  • 在线JSON解析
  • CSS可视化工具
  • HTTP在线接口测试
  • 在线编译套装
  • 在线文本比对
  • 在线思维导图
  • 在线字数统计
  • 在线代码截图
  • 在线短链接生成
  • 在线文本替换
  • 在线文件压缩工具
  • 在线多媒体转换器
  • 在线PDF工具
  • 在线PS工具
  • logo在线制作
  • 图片智能放大工具
  • 在线抠图工具
  • ICO图标在线生成
  • 视频转GIF工具
  • DeepSeek | 深度求索
  • 通义千问 Qwen3-235B
  • 智谱清言 (chatglm.cn)
  • 豆包 - (doubao.com)
  • Kimi - (moonshot.cn)
  • 百川 - (baichuan - ai.com)
  • 通义千问 - (aliyun.com)
  • 文心一言 (baidu.com)
  • 讯飞星火 - (xfyun.cn)
  • 百度AI搜索 - deepseek
  • 天工AI - (tiangong.cn)
  • 秘塔AI搜索 (metaso.cn)
  • 微软 - copilot - 要挂梯子
网站首页
快速开始
关于作者
  • 在线工具大全
  • 在线ASCII码表
  • 正则表达式调试工具
  • 正则表达式可视化
  • BASE64编解码工具
  • MD5编码工具
  • AES/DES加解密
  • ASCII编解码工具
  • 在线JSON解析
  • CSS可视化工具
  • HTTP在线接口测试
  • 在线编译套装
  • 在线文本比对
  • 在线思维导图
  • 在线字数统计
  • 在线代码截图
  • 在线短链接生成
  • 在线文本替换
  • 在线文件压缩工具
  • 在线多媒体转换器
  • 在线PDF工具
  • 在线PS工具
  • logo在线制作
  • 图片智能放大工具
  • 在线抠图工具
  • ICO图标在线生成
  • 视频转GIF工具
  • DeepSeek | 深度求索
  • 通义千问 Qwen3-235B
  • 智谱清言 (chatglm.cn)
  • 豆包 - (doubao.com)
  • Kimi - (moonshot.cn)
  • 百川 - (baichuan - ai.com)
  • 通义千问 - (aliyun.com)
  • 文心一言 (baidu.com)
  • 讯飞星火 - (xfyun.cn)
  • 百度AI搜索 - deepseek
  • 天工AI - (tiangong.cn)
  • 秘塔AI搜索 (metaso.cn)
  • 微软 - copilot - 要挂梯子
  • Python 数据分析实战:从数据清洗到可视化

Python 数据分析实战:从数据清洗到可视化

一、数据读取

1.1 读取 CSV 文件

import pandas as pd

# 读取 CSV 文件
file_path = 'data.csv'
df = pd.read_csv(file_path)

# 查看数据基本信息
print('数据基本信息:')
df.info()

# 查看数据集行数和列数
rows, columns = df.shape

if rows > 0:
    # 数据行数大于 0 时查看数据前几行信息
    print('数据前几行信息:')
    print(df.head().to_csv(sep='\t', na_rep='nan'))
else:
    print('数据全部内容信息:')
    print(df.to_csv(sep='\t', na_rep='nan'))

1.2 读取 Excel 文件

import pandas as pd

# 读取 Excel 文件
file_path = 'data.xlsx'
df = pd.read_excel(file_path)

# 查看数据基本信息
print('数据基本信息:')
df.info()

# 查看数据集行数和列数
rows, columns = df.shape

if rows > 0:
    # 数据行数大于 0 时查看数据前几行信息
    print('数据前几行信息:')
    print(df.head().to_csv(sep='\t', na_rep='nan'))
else:
    print('数据全部内容信息:')
    print(df.to_csv(sep='\t', na_rep='nan'))

二、数据清洗

2.1 处理缺失值

import pandas as pd

# 读取数据
file_path = 'data.csv'
df = pd.read_csv(file_path)

# 检查缺失值
missing_values = df.isnull().sum()
print("缺失值统计:")
print(missing_values)

# 删除含有缺失值的行
df = df.dropna()

# 或者使用均值填充数值列的缺失值
# for col in df.select_dtypes(include=['number']).columns:
#     df[col] = df[col].fillna(df[col].mean())

# 查看清洗后的数据基本信息
print('清洗后数据基本信息:')
df.info()

# 查看数据集行数和列数
rows, columns = df.shape

if rows > 0:
    # 数据行数大于 0 时查看数据前几行信息
    print('清洗后数据前几行信息:')
    print(df.head().to_csv(sep='\t', na_rep='nan'))
else:
    print('清洗后数据全部内容信息:')
    print(df.to_csv(sep='\t', na_rep='nan'))

2.2 处理重复值

import pandas as pd

# 读取数据
file_path = 'data.csv'
df = pd.read_csv(file_path)

# 检查重复值
duplicate_rows = df.duplicated().sum()
print("重复值数量:", duplicate_rows)

# 删除重复值
df = df.drop_duplicates()

# 查看清洗后的数据基本信息
print('清洗后数据基本信息:')
df.info()

# 查看数据集行数和列数
rows, columns = df.shape

if rows > 0:
    # 数据行数大于 0 时查看数据前几行信息
    print('清洗后数据前几行信息:')
    print(df.head().to_csv(sep='\t', na_rep='nan'))
else:
    print('清洗后数据全部内容信息:')
    print(df.to_csv(sep='\t', na_rep='nan'))

2.3 处理异常值

import pandas as pd
import numpy as np

# 读取数据
file_path = 'data.csv'
df = pd.read_csv(file_path)

# 假设对某列使用 IQR 方法检测异常值
column = 'column_name'
Q1 = df[column].quantile(0.25)
Q3 = df[column].quantile(0.75)
IQR = Q3 - Q1

# 定义异常值范围
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR

# 筛选出非异常值
df = df[(df[column] >= lower_bound) & (df[column] <= upper_bound)]

# 查看清洗后的数据基本信息
print('清洗后数据基本信息:')
df.info()

# 查看数据集行数和列数
rows, columns = df.shape

if rows > 0:
    # 数据行数大于 0 时查看数据前几行信息
    print('清洗后数据前几行信息:')
    print(df.head().to_csv(sep='\t', na_rep='nan'))
else:
    print('清洗后数据全部内容信息:')
    print(df.to_csv(sep='\t', na_rep='nan'))

三、数据分析

3.1 描述性统计分析

import pandas as pd

# 读取数据
file_path = 'data.csv'
df = pd.read_csv(file_path)

# 数值型数据描述性统计
numeric_stats = df.select_dtypes(include=['number']).describe()
print("数值型数据描述性统计:")
print(numeric_stats)

# 分类型数据频数统计
categorical_cols = df.select_dtypes(include=['object']).columns
for col in categorical_cols:
    freq_dist = df[col].value_counts()
    print(f"\n{col} 频数分布:")
    print(freq_dist)

3.2 相关性分析

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 读取数据
file_path = 'data.csv'
df = pd.read_csv(file_path)

# 计算相关性矩阵
correlation_matrix = df.corr()
print("相关性矩阵:")
print(correlation_matrix)

# 绘制相关性热力图
plt.figure(figsize=(10, 8))
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm')
plt.title('Correlation Heatmap')
plt.show()

3.3 数据分组与聚合

import pandas as pd

# 读取数据
file_path = 'data.csv'
df = pd.read_csv(file_path)

# 按某列分组并计算均值
grouped = df.groupby('column_name')
mean_values = grouped.mean()
print("分组后的均值:")
print(mean_values)

四、数据可视化

4.1 折线图

import pandas as pd
import matplotlib.pyplot as plt

# 读取数据
file_path = 'data.csv'
df = pd.read_csv(file_path)

# 假设绘制某两列的折线图
x = df['column_x']
y = df['column_y']

plt.plot(x, y)
plt.title('Line Plot')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.show()

4.2 柱状图

import pandas as pd
import matplotlib.pyplot as plt

# 读取数据
file_path = 'data.csv'
df = pd.read_csv(file_path)

# 假设绘制某列的柱状图
column = 'column_name'
values = df[column].value_counts()

plt.bar(values.index, values)
plt.title('Bar Plot')
plt.xlabel('Categories')
plt.ylabel('Count')
plt.show()

4.3 散点图

import pandas as pd
import matplotlib.pyplot as plt

# 读取数据
file_path = 'data.csv'
df = pd.read_csv(file_path)

# 假设绘制两列的散点图
x = df['column_x']
y = df['column_y']

plt.scatter(x, y)
plt.title('Scatter Plot')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.show()

4.4 箱线图

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 读取数据
file_path = 'data.csv'
df = pd.read_csv(file_path)

# 假设绘制某列的箱线图
column = 'column_name'

sns.boxplot(x=df[column])
plt.title('Box Plot')
plt.show()