Python实战

embedded/2024/9/24 16:28:32/

简介:

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())

```

 

2. **数据清洗**

 

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

 

```python

# 检查缺失值

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

 

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

data.dropna(inplace=True)

```

 

3. **数据分析**

 

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

 

```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)

```

 

4. **数据可视化**

 

使用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())

```

 

2. **数据预处理**

 

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

 

```python

from sklearn.preprocessing import StandardScaler

 

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

y = df['PRICE']

 

scaler = StandardScaler()

X_scaled = scaler.fit_transform(X)

```

 

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

 

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

 

```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不仅在数据分析、可视化方面表现出色,还能够轻松应对机器学习任务和网络爬虫需求,展现了其作为通用编程语言的广泛适用性和灵活性。


http://www.ppmy.cn/embedded/41192.html

相关文章

Docker安装达梦数据库

1.确保已安装Docker 可参考&#xff1a;Linux安装Docker-CSDN博客 2.上传dm镜像并导入安装包 可以从&#xff1a;产品下载 | 达梦数据库下载dm镜像&#xff0c;如下图&#xff1a; docker load -i dm8_20230808.tar 3.导入后查看镜像 docker images 4.启动容器 docker run …

error和exception的区别?

Error类: 一般是指与虚拟机相关的问题&#xff0c;如:系统崩溃,虚拟机错误&#xff0c;内存空间不足&#xff0c;方法调用栈溢出等。这类错误将会导致应用程序中断&#xff0c;仅靠程序本身无法恢复和预防; Exception 类:分为运行时异常和受检查的异常。 运行时异常:【如空指针…

容器化管理SpringBoot项目:在用jar包制作镜像的时候遇到的错误记录

在容器化管理SpringBoot项目&#xff0c;进行到“用jar包制作镜像”一步时&#xff0c;遇到的error真的是一环接着一环&#xff0c;这里就记录一下&#xff0c;一套流程下来遇到的error&#xff0c;以及一些我的解决方法&#xff1a; ERROR: "docker buildx build" r…

【打字】打字训练之针对性键盘区域练习

本文章的核心点是&#xff1a;使用代码生成自己想要训练的键位的词汇&#xff0c;然后导入到打字软件针对性练习 一个程序员突然想纠正打字习惯源于腱鞘炎&#xff0c;虽然使用双拼打字已经不慢了&#xff0c;但是姿势不是很正确&#xff0c;导致了腱鞘炎。 所以想着好好纠正指…

YOLO系列笔记(十四)——Compute Canada计算平台及其常见命令介绍

Compute Canada平台及其常见命令介绍 前言优势使用方法1. 检查模块不带版本号带版本号 2. 加载模块3. 检查模块是否加载成功4. 创建虚拟环境5. 编写作业脚本6. 提交作业7. 监控作业状态8. 查看作业开始预计时间9. 查看作业的详细输出10. 取消作业 注意结语 前言 大家好&#x…

NSSCTF Web方向的例题和相关知识点(一)

[SWPUCTF 2021 新生赛]jicao 解题&#xff1a; 打开环境&#xff0c;是一段php代码 包含了flag.php文件&#xff0c;设定了一个POST请求的id和GET请求的json 语句会对GET请求的数据进行json解码 如果id和json变量的值都等于设定字符串&#xff0c;则得到 flag 我们可以使用…

力扣例题(用栈实现队列)

目录 链接. - 力扣&#xff08;LeetCode&#xff09; 描述 思路 push pop peek empty 代码 链接. - 力扣&#xff08;LeetCode&#xff09; 描述 思路 push 例如我们将10个元素放入栈中&#xff0c;假设最左边为栈顶&#xff0c;最右侧为栈底 则为10,9,8,7,6,5,4,3,…

Redis实战笔记

黑马点评项目笔记 一&#xff1a;数据交互&#xff1a; 1.把String解析成Java对象集合并且存入Redis及Java对象集合转换成JSON。 Overridepublic Result queryTypeList() {String s stringRedisTemplate.opsForValue().get("cache:list:");System.out.println(&qu…