python统计分析——直方图(sns.histplot)

本文详细介绍了如何使用Python的seaborn库中的histplot函数创建直方图,包括参数解释如data、x、hue、weights、stat、bins等,以及不同参数如何影响图形的展示效果,适用于数据分析和数据探索。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用seanborn.histplot()函数绘制直方图

from matplotlib.pyplot as plt
import seaborn as sns

data_set=np.array([2,3,3,4,4,4,4,5,5,6])
plt.hist(fish_data)

(1)data=None,  表示数据源。
(2)x=None, 表示直方图的分布垂直与x轴。单位序列型数据时,默认垂直于x轴。
(3)y=None, 表示直方图的分布垂直于y轴。

(4)hue=None, 用于区分数据系列。
df=pd.DataFrame(data={
    'type':['A','A','A','A','A','A','A','A','A','A','B','B','B','B','B','B','B','B','B','B'],
    'value':[2,3,3,4,4,4,4,5,5,6,5,6,6,7,7,7,7,8,8,9]
})
sns.histplot(data=df,x='value',hue='type')

(5)weights=None, 表示对数据设置权重,要求权重序列的长度与作图的数据点的长度一致。
df=pd.DataFrame(data={
    'type':['A','A','A','A','A','A','A','A','A','A','B','B','B','B','B','B','B','B','B','B'],
    'value':[2,3,3,4,4,4,4,5,5,6,5,6,6,7,7,7,7,8,8,9],
    'weight':[2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1]
})
sns.histplot(data=df,x='value',weights='weight')
图中A的权重是B权重的2倍。

(6)stat='count', 默认为count,表示频数统计。还有frequency、probability、percent、density。frequency表示频数除以极差(全距);probability表示用小数点表示的频率;percent表示用百分数表示的频率;density表示概率密度,为frequency之和归一处理后的数据。

(7)bins='auto', 表示数据桶的数目,即直方图呈现出的数据组数。当bins为一个整数时,表示需要分组的数目;当bins为一个数据序列时,表示用于分组的临界值。举例说明:当bins=[1,2,3,4]时,用于分组的区间为:[1,2)、[2,3)、[3,4];当bins为文本时,表示作图时的分组策略,可用选项具体有:'auto', 'fd', 'doane','scott', 'stone', 'rice', 'sturges', 'sqrt'。下图为“rice”分组策略为例,其余的可以自行尝试。

(8)binwidth=None, 用于设置数据桶的组距,下图设置组距为0.8,即binwidth=0.8。

(9)binrange=None, 用于设置绘制直方图的数据源的上下限,低于下限或高于上限的数据将不参与绘制。下图设置的组距是3-5。

(10)discrete=None, 用于告诉程序数据是否是离散型数据,如果设置为True,则按照离散型数据绘制直方图。下图中注意看横坐标的变化。

(11)cumulative=False, 如果设置为True表示对数据进行累加。

(12)common_bins=True, 当存在两组或多组数据时,用于明确分组依据是否按照统一标准进行。默认为统一标准。当设置为False时,即各自按各自分组依据进行,作图如下:

(13)common_norm=True, 当分组数据作图,stat设置为‘percent’或‘density’时,如果设置为True,表示按整体进行汇总转换,当设置为False时,表示按各组自己的数据汇总转换。下图分别为True和False的设置,注意看纵坐标轴的变换。

(14)multiple='layer', 用于设置分组数据的展现形式。有layer、dodge、stack、fill四种设置。

(15)element='bars', 用于设置直方图的表现形式。有bars、step和poly三种设置。

(16)fill=True, 用于设置条形图是否有填充,默认为True,下图为设置为False的展示。

(17)shrink=1, 用于设置条形图的宽度相对于组距的宽度,默认为1,即二者相等。下图为设置为0.8的效果。

(18)kde=False, 用于设置是否显示核密度曲线(概率密度函数是一个已知概率分布的函数,用于描述随机变量的概率分布。而核密度函数是一种基于数据样本的估计方法,用于估计数据的概率密度,并生成一个平滑的密度曲线。因此,概率密度函数是一种理论上的概念,而核密度函数是一种实际上用于估计概率密度的方法。)

(19)log_scale=None, 由于设置是否对数据进行对数转换。

### Python 游戏数据分析毕业设计示例 #### 1. 课题背景 随着电子竞技行业的迅速发展,游戏公司越来越重视通过数据分析来优化用户体验、提升玩家留存率以及增加收益。本课题旨在构建一套完整的基于Python的游戏数据分析系统,通过对游戏玩家行为数据的收集、整理和分析,揭示影响玩家体验的关键因素。 #### 2. 数据采集 为了获得有效的游戏内用户活动记录,可以通过API接口或Web Scraping技术从官方服务器获取必要的日志文件。这些原始数据通常包含了用户的登录时间、在线时长、购买历史以及其他交互操作等信息[^4]。 #### 3. 数据预处理 由于直接抓取到的数据可能存在噪声或者不一致的情况,在正式进入分析阶段之前需要先对其进行清洗与转换。这一步骤涉及去除重复项、填补缺失值、标准化数值范围等工作,确保后续建模过程中的准确性[^1]。 ```python import pandas as pd from sklearn.preprocessing import StandardScaler # 加载数据集 data = pd.read_csv('game_logs.csv') # 处理缺失值 data.fillna(data.mean(), inplace=True) # 特征缩放 scaler = StandardScaler() scaled_features = scaler.fit_transform(data[['play_time', 'purchase_amount']]) ``` #### 4. 探索性数据分析(EDA) 利用Matplotlib库绘制直方图、箱形图等多种统计图形,探索不同变量之间的关系;借助Seaborn制作热力图展示特征间的相关系数矩阵,从而发现潜在模式并为下一步深入研究奠定基础。 ```python import matplotlib.pyplot as plt import seaborn as sns plt.figure(figsize=(8,6)) sns.histplot(data['daily_active_users'], bins=30, kde=False) plt.title('Daily Active Users Distribution') plt.show() correlation_matrix = data.corr() sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm') plt.title('Feature Correlation Heatmap') plt.show() ``` #### 5. 用户分群与画像建立 采用K-means聚类算法或其他无监督学习方法对全体注册账户按照其活跃程度、消费习惯等方面进行细分,并据此描绘典型群体形象,以便于制定针对性营销策略。 ```python from sklearn.cluster import KMeans kmeans = KMeans(n_clusters=5).fit(scaled_features) labels = kmeans.labels_ # 将标签加入原DataFrame中用于进一步分析 data['cluster'] = labels ``` #### 6. 关键指标预测模型搭建 针对特定业务场景下的核心绩效衡量标准——比如次月流失概率、未来7天内的充值金额预期等——训练回归/分类器来进行短期趋势预报,辅助管理层提前做好资源调配准备。 ```python from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression X_train, X_test, y_train, y_test = train_test_split( scaled_features, data['churn_next_month'], test_size=0.2, random_state=42) model = LogisticRegression().fit(X_train, y_train) predictions = model.predict_proba(X_test)[:, 1] ``` #### 7. 可视化仪表盘开发 最后,运用Dash框架创建动态更新的网页版控制面板,实时反映各项运营统计数据的变化情况,支持自定义查询条件筛选查看感兴趣的部分内容,增强决策层对于整体状况的认知能力[^3]。 ```python import dash import dash_core_components as dcc import dash_html_components as html app = dash.Dash(__name__) app.layout = html.Div([ dcc.Graph(id='active-users-graph'), dcc.Slider( id='date-slider', min=data.index.min(), max=data.index.max(), value=data.index.median(), marks={str(i): str(i) for i in range(int(data.index.min()), int(data.index.max())+1)} ) ]) if __name__ == '__main__': app.run_server(debug=True) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值