版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
AI时代技能:Python数据分析与可视化实战教程Python作为现代编程语言中的佼佼者,在数据分析与可视化领域展现出强大的能力。随着人工智能时代的到来,掌握Python数据分析与可视化技能已成为众多行业从业者的必备能力。本文将深入探讨Python在数据分析与可视化方面的实战应用,涵盖数据获取、清洗、分析及可视化等关键环节,通过具体案例展示Python如何赋能数据驱动决策。一、Python数据分析环境搭建进行数据分析前,需要搭建合适的开发环境。Python自带的解释器可以满足基本需求,但专业的数据分析工作需要更完善的环境配置。推荐使用Anaconda发行版,它集成了Python解释器、JupyterNotebook、Pandas、NumPy、Matplotlib等核心数据分析库,并提供conda包管理工具。安装Anaconda后,可以通过以下命令创建虚拟环境,确保项目间的依赖管理:pythoncondacreate-ndata_analyticspython=3.8pandasnumpymatplotlibseaborncondaactivatedata_analyticsJupyterNotebook是数据分析的理想工具,其交互式界面便于代码编写、结果展示和文档记录。启动Notebook后,可以创建新的笔记本或使用内置的魔法命令简化代码执行:python生成随机数并绘制直方图%matplotlibinlineimportnumpyasnpimportmatplotlib.pyplotaspltdata=np.random.normal(0,1,1000)plt.hist(data,bins=30)plt.title('随机正态分布')plt.xlabel('值')plt.ylabel('频率')plt.show()二、数据获取与处理数据分析的第一步是获取数据。Python提供了多种数据获取方式,包括API调用、网络爬虫和文件读取等。2.1从API获取数据现代许多服务提供RESTfulAPI供数据获取。使用requests库可以方便地调用API:pythonimportrequestsurl="/data"headers={"Authorization":"Beareryour_token"}response=requests.get(url,headers=headers)data=response.json()将JSON数据转换为PandasDataFrameimportpandasaspddf=pd.DataFrame(data["results"])2.2网络爬虫对于没有提供API的数据源,可以使用BeautifulSoup和Scrapy等库进行网页爬取:pythonimportrequestsfrombs4importBeautifulSoupurl="/table"response=requests.get(url)soup=BeautifulSoup(response.text,"html.parser")table=soup.find("table")rows=table.find_all("tr")data=[]forrowinrows:cols=row.find_all("td")cols=[col.text.strip()forcolincols]data.append(cols)df=pd.DataFrame(data[1:],columns=data[0])2.3数据清洗获取的数据往往需要清洗才能使用。Pandas提供了强大的数据清洗功能:python检查缺失值print(df.isnull().sum())删除缺失值df_cleaned=df.dropna()填充缺失值df_filled=df.fillna(0)数据类型转换df["date"]=pd.to_datetime(df["date"])去重df_unique=df.drop_duplicates()窗口函数df["moving_avg"]=df["value"].rolling(window=7).mean()三、探索性数据分析探索性数据分析(EDA)是理解数据特征的关键步骤。Pandas和Matplotlib提供了丰富的可视化工具。3.1描述性统计python基本统计描述print(df.describe())分位数分析print(df["value"].quantile([0.25,0.5,0.75]))相关性分析correlation=df.corr()print(correlation)绘制相关性热力图importseabornassnsplt.figure(figsize=(10,8))sns.heatmap(correlation,annot=True,cmap="coolwarm")plt.title("相关性热力图")plt.show()3.2数据可视化3.2.1单变量分析python直方图plt.figure(figsize=(10,6))sns.histplot(df["value"],kde=True)plt.title("值分布直方图")plt.xlabel("值")plt.ylabel("频率")plt.show()箱线图plt.figure(figsize=(10,6))sns.boxplot(x=df["category"],y=df["value"])plt.title("按类别分的值箱线图")plt.xlabel("类别")plt.ylabel("值")plt.show()3.2.2多变量分析python散点图矩阵sns.pairplot(df[["value1","value2","value3"]])plt.suptitle("散点图矩阵",y=1.02)plt.show()条形图plt.figure(figsize=(12,8))sns.barplot(x="category",y="value",hue="sub_category",data=df)plt.title("按类别和子类别的值条形图")plt.xlabel("类别")plt.ylabel("值")plt.xticks(rotation=45)plt.show()3.3时空分析python时间序列图df["date"]=pd.to_datetime(df["date"])df.set_index("date",inplace=True)plt.figure(figsize=(12,6))df["value"].resample("M").mean().plot()plt.title("月度平均值时间序列")plt.xlabel("日期")plt.ylabel("平均值")plt.show()地理数据可视化importgeopandasasgpdimportmatplotlib.pyplotaspltgdf=gpd.read_file("path/to/geojson")gdf["value"]=df["value"]fig,ax=plt.subplots(1,1,figsize=(10,8))gdf.plot(column="value",ax=ax,legend=True,legend_kwds={"label":"值分布","orientation":"horizontal"})plt.title("地理分布热力图")plt.show()四、高级数据分析技术4.1机器学习应用pythonfromsklearn.model_selectionimporttrain_test_splitfromsklearn.linear_modelimportLinearRegressionfromsklearn.metricsimportmean_squared_error,r2_score准备数据X=df[["feature1","feature2"]]y=df["target"]划分训练集和测试集X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=42)训练模型model=LinearRegression()model.fit(X_train,y_train)评估模型y_pred=model.predict(X_test)mse=mean_squared_error(y_test,y_pred)r2=r2_score(y_test,y_pred)print(f"均方误差:{mse}")print(f"决定系数:{r2}")特征重要性coefficients=pd.DataFrame({"feature":X.columns,"importance":model.coef_})coefficients.sort_values("importance",ascending=False,inplace=True)print(coefficients)4.2交互式可视化使用Plotly和Bokeh可以创建交互式可视化,便于探索和分析:pythonimportplotly.expressaspx创建交互式散点图fig=px.scatter(df,x="feature1",y="feature2",color="category",size="value",hover_data=["target"],title="交互式散点图")fig.update_layout(width=800,height=600)fig.show()创建交互式仪表盘importdashfromdashimportdcc,html,Input,Outputapp=dash.Dash(__name__)app.layout=html.Div([dcc.Graph(id='interactive-plot'),dcc.Slider(id='year-slider',min=df['date'].dt.year.min(),max=df['date'].dt.year.max(),value=df['date'].dt.year.min(),marks={str(year):str(year)foryearindf['date'].dt.year.unique()},step=1)])@app.callback(Output('interactive-plot','figure'),[Input('year-slider','value')])defupdate_plot(selected_year):filtered_df=df[df['date'].dt.year==selected_year]fig=px.scatter(filtered_df,x="feature1",y="feature2",color="category",size="value",hover_data=["target"])returnfigif__name__=='__main__':app.run_server(debug=True)五、实战案例:电商销售数据分析5.1案例背景某电商平台需要分析过去一年的销售数据,以优化产品策略和营销活动。数据包含订单信息、用户信息、产品信息和促销活动记录。5.2数据准备python读取数据orders=pd.read_csv("orders.csv")products=pd.read_csv("products.csv")customers=pd.read_csv("customers.csv")promotions=pd.read_csv("promotions.csv")数据合并sales_data=orders.merge(products,on="product_id")sales_data=sales_data.merge(customers,on="customer_id")sales_data=sales_data.merge(promotions,on="promotion_id",how="left")日期处理sales_data["order_date"]=pd.to_datetime(sales_data["order_date"])sales_data["year"]=sales_data["order_date"].dt.yearsales_data["month"]=sales_data["order_date"].dt.monthsales_data["day"]=sales_data["order_date"].dt.day5.3分析与可视化5.3.1销售趋势分析python月度销售趋势monthly_sales=sales_data.groupby([sales_data["order_date"].dt.to_period("M")])["revenue"].sum()plt.figure(figsize=(12,6))monthly_sales.plot()plt.title("月度销售趋势")plt.xlabel("月份")plt.ylabel("销售额")plt.show()日销售波动daily_sales=sales_data.groupby([sales_data["order_date"].dt.to_period("D")])["revenue"].sum()plt.figure(figsize=(12,6))daily_sales.plot()plt.title("日销售波动")plt.xlabel("日期")plt.ylabel("销售额")plt.show()5.3.2产品分析python热销产品top_products=sales_data.groupby("product_name")["quantity"].sum().sort_values(ascending=False).head(10)plt.figure(figsize=(12,6))sns.barplot(x=top_products.values,y=top_products.index)plt.title("热销产品")plt.xlabel("销售量")plt.ylabel("产品名称")plt.show()产品类别分析product_category_sales=sales_data.groupby("category")["revenue"].sum().sort_values(ascending=False)plt.figure(figsize=(10,6))product_category_sales.plot(kind="pie",autopct="%1.1f%%")plt.title("按类别的销售额分布")plt.ylabel("")plt.show()5.3.3用户分析python用户地域分布customer_region=sales_data.groupby("region")["customer_id"].nunique().sort_values(ascending=False)plt.figure(figsize=(10,6))sns.barplot(x=customer_region.index,y=customer_region.values)plt.title("用户地域分布")plt.xlabel("地区")plt.ylabel("用户数量")plt.xticks(rotation=45)plt.show()用户购买频率customer_frequency=sales_data.groupby("customer_id").size().value_counts(normalize=True).sort_index()plt.figure(figsize=(10,6))customer_frequency.plot()plt.title("用户购买频率分布")plt.xlabel("购买次数")plt.ylabel("用户比例")plt.show()5.3.4促销活动效果python促销活动效果promotion_effect=sales_data.groupby("promotion_name")["revenue"].sum().sort_values(ascending=False)plt.figure(figsize=(12,6))sns.barplot(x=p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中国科学院大气物理研究所公共技术中心招聘1人备考题库(北京)带答案详解(综合卷)
- 2026安徽长三角产业创新研究院人才招聘备考题库带答案详解
- 2026云南楚雄州武定县公安局发窝派出所招聘辅警1人备考题库含答案详解(突破训练)
- 讲四史故事 传四史精神
- 2026青海海西州乌兰县人民法院临聘财务辅助岗招聘1人备考题库及参考答案详解(满分必刷)
- 2026绵阳嘉信人才服务有限公司招聘工作人员1人备考题库附答案详解(预热题)
- 2026云南昆明华航技工学校蒙自校区招聘12人备考题库附答案详解(模拟题)
- 2026山西省气象局招聘应届高校毕业生12人备考题库(第2号)及参考答案详解(预热题)
- 2026年上半年长信保险经纪(四川)有限公司第二批人员招聘1人备考题库含答案详解(b卷)
- 2026广东深圳理工附中教师招聘9人备考题库及答案详解(网校专用)
- 【揭阳】2025年广东省揭阳市惠来县卫健系统公开招聘事业单位工作人员152人笔试历年典型考题及考点剖析附带答案详解
- 2025年北京市西城区社区工作者招聘笔试真题及答案
- 2026年及未来5年市场数据中国演艺行业市场发展数据监测及投资潜力预测报告
- Z20名校联盟2026届高三语文第二次联考考场标杆文9篇:“出片”
- 部编版五年级下册第二单元 口语交际《怎样表演课本剧》考题作业设计
- 2026年员工安全操作培训
- 2025北京空港航空地面服务有限公司招聘50人笔试历年参考题库附带答案详解
- 燃料电池原理及应用课件-002
- 《医学遗传学》教学大纲(本科)
- 《斐波那契数列》课件
- 质量在我心中,质量在我手中
评论
0/150
提交评论