数据分析和可视化(自己看)

数据分析和可视化(自己看)

1. 数据分析
1.1 分组与聚合 (groupby)数据分析时,常常需要对数据进行分组(如按类别、时间等),并对每组数据进行聚合(如求和、平均值、计数等)。pandas 的 groupby 方法是进行这种操作的基础。

import pandas as pd

# 创建示例 DataFrame
df = pd.DataFrame({
    'Category': ['A', 'B', 'A', 'B', 'A'],
    'Sales': [100, 200, 150, 250, 300]
})

# 按 Category 分组并计算 Sales 的平均值
grouped = df.groupby('Category')['Sales'].mean()
print(grouped)

输出:

Category
A    183.33
B    225.00
Name: Sales, dtype: float64

你还可以使用 agg() 方法进行更复杂的聚合:

# 对不同列应用不同的聚合操作
grouped = df.groupby('Category').agg({
    'Sales': ['sum', 'mean', 'max']
})
print(grouped)

1.2 透视表 (pivot_table)
透视表是另一种常用的数据聚合方式,允许你在多维度上汇总数据,并可以轻松地进行数据透视

# 创建示例 DataFrame
df = pd.DataFrame({
    'Category': ['A', 'B', 'A', 'B', 'A'],
    'Month': ['Jan', 'Jan', 'Feb', 'Feb', 'Mar'],
    'Sales': [100, 200, 150, 250, 300]
})

# 创建透视表
pivot = df.pivot_table(values='Sales', index='Month', columns='Category', aggfunc='sum')
print(pivot)

输出:

Category      A    B
Month                
Feb        150  250
Jan        100  200
Mar        300  NaN

1.3 时间序列分析
时间序列数据分析在金融、销售等领域非常重要。pandas 提供了强大的时间序列功能。

# 创建一个时间序列数据
dates = pd.date_range('20230101', periods=6)
df = pd.DataFrame({
    'Date': dates,
    'Sales': [100, 200, 150, 250, 300, 350]
})

# 设置日期为索引
df.set_index('Date', inplace=True)

# 计算移动平均(3日滚动平均)
df['Rolling Mean'] = df['Sales'].rolling(window=3).mean()
print(df)

输出:

            Sales  Rolling Mean
Date                           
2023-01-01    100           NaN
2023-01-02    200           NaN
2023-01-03    150    150.000000
2023-01-04    250    200.000000
2023-01-05    300    233.333333
2023-01-06    350    266.666667

2. 数据可视化
2.1 matplotlib:基础绘图
matplotlib 是 Python 最常用的绘图库之一,提供了非常灵活的图形绘制功能。

import matplotlib.pyplot as plt

# 创建示例数据
x = [1, 2, 3, 4, 5]
y = [10, 20, 25, 30, 35]

# 创建基本的折线图
plt.plot(x, y)
plt.title('Basic Line Plot')
plt.xlabel('X')
plt.ylabel('Y')
plt.show()

2.2 seaborn:更简洁美观的可视化
seaborn 是基于 matplotlib 的高级数据可视化库,它提供了更多的内置样式和功能,适合用于统计数据可视化。

import seaborn as sns

# 创建示例数据
df = pd.DataFrame({
    'Category': ['A', 'B', 'A', 'B', 'A'],
    'Sales': [100, 200, 150, 250, 300]
})

# 创建条形图
sns.barplot(x='Category', y='Sales', data=df)
plt.title('Bar Plot')
plt.show()

2.3 多变量可视化:pairplot 和 heatmap
pairplot:用来展示数据集中的多个变量之间的关系,特别是查看不同特征之间的相关性。
heatmap:用来可视化变量之间的相关矩阵,直观地展示不同变量之间的关系强度。

# 示例:展示多个特征之间的关系
iris = sns.load_dataset('iris')
sns.pairplot(iris, hue='species')
plt.show()

# 示例:热图展示相关矩阵
corr = iris.corr()
sns.heatmap(corr, annot=True, cmap='coolwarm', center=0)
plt.title('Correlation Heatmap')
plt.show()

2.4 动态与交互式可视化:plotly
如果你需要更加动态和交互的图表,可以使用 plotly。它支持交互式图表,可以在浏览器中查看

import plotly.express as px

# 创建示例数据
df = pd.DataFrame({
    'Category': ['A', 'B', 'A', 'B', 'A'],
    'Sales': [100, 200, 150, 250, 300]
})

# 创建交互式柱状图
fig = px.bar(df, x='Category', y='Sales', title="Interactive Bar Chart")
fig.show()

plotly 提供了很多类型的图表,比如柱状图、散点图、线性图、地图等,且图表可以动态缩放、悬停查看数据等。

2.5 可视化技巧和优化
自定义图形样式:在 matplotlib 和 seaborn 中,你可以自定义颜色、大小、字体等,使得图表更加美观和易于阅读。
子图:通过 plt.subplots(),你可以将多个图表显示在一个图形窗口中,进行比较。
动画:如果你想展示随时间变化的数据,可以使用 matplotlib.animation 或 plotly 创建动态图表。

# 示例:多子图显示
fig, axes = plt.subplots(1, 2, figsize=(12, 6))
axes[0].plot(x, y)
axes[0].set_title('Line Plot')
axes[1].bar(x, y)
axes[1].set_title('Bar Chart')
plt.tight_layout()
plt.show()

3. 统计分析与建模
当你处理更复杂的数据时,可能需要进行统计分析和建模。在这个部分,statsmodels 和 scikit-learn 是非常有用的工具。
回归分析:通过 statsmodels 来进行线性回归、逻辑回归等。
机器学习模型:通过 scikit-learn 来应用各种机器学习算法,如分类、回归、聚类等。

import statsmodels.api as sm

# 线性回归示例
X = df[['Sales']]
X = sm.add_constant(X)  # 添加常数项
y = df['Sales']
model = sm.OLS(y, X).fit()
print(model.summary())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值