Python实战

简介:

Python作为一门功能强大且易学的编程语言,广泛应用于数据分析、机器学习、Web开发等多个领域。本文将通过几个实际案例,展示Python在数据分析与可视化方面的强大能力,涵盖数据清洗、统计分析、以及使用matplotlib和seaborn库进行数据可视化等环节。我们将使用Python的标准库及一些流行的第三方库,如pandas、numpy和matplotlib,来完成这些任务。

环境准备

首先,请确保你的环境中安装了Python以及以下库:

  • pandas:用于数据处理和分析

  • numpy:提供高性能的科学计算功能

  • matplotlib:用于数据可视化的基本库

  • seaborn:基于matplotlib,提供更高级的数据可视化功能

可以通过pip命令安装这些库:

```bash

pip install pandas numpy matplotlib seaborn

```

Demo1:销售数据分析与可视化

假设我们有一份电商网站的销售数据,存储在一个CSV文件中,包含日期、产品ID、销量、价格等信息。我们的目标是分析不同产品的销售趋势并绘制相关图表。

  1. **数据加载与预览**

```python

import pandas as pd

加载数据

data = pd.read_csv('sales_data.csv')

显示前5行数据

print(data.head())

```

  1. **数据清洗**

检查并处理缺失值、异常值等。

```python

检查缺失值

print(data.isnull().sum())

假设我们决定删除含有缺失值的行

data.dropna(inplace=True)

```

  1. **数据分析**

计算总销售额、各产品的平均售价和销量。

```python

total_sales = data['销量'] * data['价格']

print(f"总销售额: {total_sales.sum()}")

average_price = data.groupby('产品ID')['价格'].mean()

print("各产品平均售价:")

print(average_price)

product_sales = data.groupby('产品ID')['销量'].sum()

print("各产品总销量:")

print(product_sales)

```

  1. **数据可视化**

使用matplotlib和seaborn绘制销量随时间变化的趋势图和各产品销量的柱状图。

```python

import matplotlib.pyplot as plt

import seaborn as sns

绘制销量随时间变化的趋势图

plt.figure(figsize=(10, 6))

sns.lineplot(x='日期', y='销量', hue='产品ID', data=data)

plt.title('不同产品的销量随时间变化')

plt.show()

绘制各产品销量的柱状图

plt.figure(figsize=(10, 6))

sns.barplot(x=product_sales.index, y=product_sales.values)

plt.title('各产品总销量')

plt.xlabel('产品ID')

plt.ylabel('销量')

plt.show()

```

Demo2:Twitter情感分析

本案例将展示如何使用Python进行文本数据的情感分析。我们从Twitter上抓取关于特定话题的推文,然后使用nltk库进行预处理,并利用TextBlob库进行情感分析。

由于篇幅限制,这里仅提供简化的示例流程,具体数据获取过程请参考Twitter API文档或使用公开的Twitter数据集。

```python

from textblob import TextBlob

import nltk

from nltk.corpus import stopwords

from nltk.tokenize import word_tokenize

假设tweets是一个包含推文的列表

tweets = ["我喜欢这个产品!", "服务太糟糕了!", "..."]

数据预处理

stop_words = set(stopwords.words('english'))

processed_tweets = []

for tweet in tweets:

words = word_tokenize(tweet.lower())

words = [word for word in words if word.isalpha() and word not in stop_words]

processed_tweets.append(' '.join(words))

情感分析

positive, negative, neutral = 0, 0, 0

for tweet in processed_tweets:

analysis = TextBlob(tweet)

if analysis.sentiment.polarity > 0:

positive += 1

elif analysis.sentiment.polarity < 0:

negative += 1

else:

neutral += 1

print(f"正面评价: {positive}, 负面评价: {negative}, 中立评价: {neutral}")

```

以上两个案例展示了Python在处理不同类型数据(结构化数据和文本数据)时的强大能力,从数据清洗、分析到可视化的全过程。Python的易用性和丰富的库支持使其成为数据科学家和分析师的首选工具之一。希望这些案例能激发你对Python在数据分析领域的探索兴趣。

Demo3:机器学习应用 - 线性回归预测房价

本案例将使用Python中的scikit-learn库来构建一个简单的线性回归模型,用于预测波士顿地区的房价。波士顿房价数据集是机器学习领域的一个经典数据集,包含了房屋的各种特征(如犯罪率、房间数量、地理位置等)以及对应的房价。

  1. 数据加载与探索

```python

from sklearn.datasets import load_boston

import pandas as pd

boston = load_boston()

df = pd.DataFrame(boston.data, columns=boston.feature_names)

df['PRICE'] = boston.target

print(df.head())

```

  1. **数据预处理**

对数据进行标准化处理,以便更好地进行模型训练。

```python

from sklearn.preprocessing import StandardScaler

X = df.drop('PRICE', axis=1)

y = df['PRICE']

scaler = StandardScaler()

X_scaled = scaler.fit_transform(X)

```

  1. **模型训练与评估**

使用训练集数据训练线性回归模型,并评估模型性能。

```python

from sklearn.model_selection import train_test_split

from sklearn.linear_model import LinearRegression

from sklearn.metrics import mean_squared_error, r2_score

X_train, X_test, y_train, y_test = train_test_split(X_scaled, 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): {mse:.2f}")

print(f"R² 分数: {r2:.2f}")

```

Demo4:网络爬虫 - 爬取天气数据

本案例将编写一个简单的网络爬虫,使用Python的requests和BeautifulSoup库,从一个假设的天气预报网站上抓取某城市的未来几天天气预报信息。

```python

import requests

from bs4 import BeautifulSoup

url = "http://example.com/weather/city/forecast" # 替换为实际的天气预报网址

response = requests.get(url)

soup = BeautifulSoup(response.text, 'html.parser')

forecast_items = soup.find_all('div', class_='forecast-item') # 假设每个预报项都在此类的div中

for item in forecast_items:

date = item.find('span', class_='date').text

condition = item.find('span', class_='condition').text

temp_high = item.find('span', class_='temp-high').text

temp_low = item.find('span', class_='temp-low').text

print(f"{date}: {condition}, 高温 {temp_high}°C, 低温 {temp_low}°C")

```

注意:实际进行网络爬虫时,务必遵守目标网站的robots.txt协议,尊重网站的使用条款,避免频繁请求导致服务器压力过大。同时,上述代码中的URL和类名仅为示例,需要根据目标网站的实际结构进行调整。

通过这四个案例,我们可以看到Python不仅在数据分析、可视化方面表现出色,还能够轻松应对机器学习任务和网络爬虫需求,展现了其作为通用编程语言的广泛适用性和灵活性。

相关推荐
m0_74823658几秒前
Django 后端数据传给前端
前端·数据库·django
Willliam_william1 分钟前
Python学习之路(5)— 使用C扩展
c语言·python·学习
m0_748251722 分钟前
Spring Boot——统一功能处理
java·spring boot·后端
love静思冥想2 分钟前
Apache Commons Pool :介绍与使用
java·apache·线程池优化
go54631584655 分钟前
磁盘调度算法
服务器·数据库·算法
余生H6 分钟前
前端Python应用指南(五)用FastAPI快速构建高性能API
前端·python·fastapi
xmh-sxh-131432 分钟前
常用的前端框架有哪些
java
老马啸西风36 分钟前
NLP 中文拼写检测纠正论文 A Hybrid Approach to Automatic Corpus Generation 代码实现
java
小蒜学长38 分钟前
基于Spring Boot的宠物领养系统的设计与实现(代码+数据库+LW)
java·前端·数据库·spring boot·后端·旅游·宠物
L.S.V.38 分钟前
Java 溯本求源之基础(三十一)——泛型
java·开发语言