对于这个任务,可以按照以下步骤进行:

  1. 利用Python编写爬虫程序,爬取需要的数据,并存储到Hadoop/Hbase/ES/clickhouse等数据库中。
  2. 对存储的数据进行预处理操作,包括数据清洗、数据转换、数据合并等。
  3. 设计不少于10条不同的统计信息,如数据的平均值、标准差、最大值、最小值、频率分布等。
  4. 利用Python的数据分析库,如pandas、numpy等,实现统计信息的计算和可视化。
  5. 将统计信息进行可视化,如绘制折线图、柱状图、散点图等。

代码示例:

1.爬虫程序:

import requests from bs4 import BeautifulSoup import pandas as pd import pymysql

爬取数据

url = 'https://www.xxx.com' res = requests.get(url) soup = BeautifulSoup(res.text, 'html.parser') data = [] for item in soup.find_all('div', {'class': 'item'}): title = item.find('a', {'class': 'title'}).text.strip() author = item.find('span', {'class': 'author'}).text.strip() date = item.find('span', {'class': 'date'}).text.strip() data.append([title, author, date])

存储到数据库

conn = pymysql.connect(host='localhost', user='root', password='123456', database='test') cursor = conn.cursor() for item in data: sql = "INSERT INTO data (title, author, date) VALUES (%s, %s, %s)" cursor.execute(sql, item) conn.commit() cursor.close() conn.close()

2.数据预处理:

import pandas as pd import pymysql

从数据库中读取数据

conn = pymysql.connect(host='localhost', user='root', password='123456', database='test') data = pd.read_sql('SELECT * FROM data', conn)

数据清洗

data.dropna(inplace=True)

数据转换

data['date'] = pd.to_datetime(data['date'])

数据合并

data = data.groupby(['author', pd.Grouper(key='date', freq='M')])['title'].count().reset_index() data.columns = ['author', 'date', 'count']

存储到数据库

conn = pymysql.connect(host='localhost', user='root', password='123456', database='test') cursor = conn.cursor() for index, row in data.iterrows(): sql = "INSERT INTO processed_data (author, date, count) VALUES (%s, %s, %s)" cursor.execute(sql, (row['author'], row['date'].strftime('%Y-%m-%d'), row['count'])) conn.commit() cursor.close() conn.close()

3.统计信息计算:

import pandas as pd import pymysql

从数据库中读取数据

conn = pymysql.connect(host='localhost', user='root', password='123456', database='test') data = pd.read_sql('SELECT * FROM processed_data', conn)

统计信息计算

mean = data['count'].mean() std = data['count'].std() max = data['count'].max() min = data['count'].min() freq = data['count'].value_counts()

print('平均值:', mean) print('标准差:', std) print('最大值:', max) print('最小值:', min) print('频率分布:\n', freq)

4.统计信息可视化:

import pandas as pd import pymysql import matplotlib.pyplot as plt

从数据库中读取数据

conn = pymysql.connect(host='localhost', user='root', password='123456', database='test') data = pd.read_sql('SELECT * FROM processed_data', conn)

统计信息可视化

data.groupby('author')['count'].sum().sort_values(ascending=False)[:10].plot(kind='bar') plt.title('Top 10 Authors') plt.xlabel('Author') plt.ylabel('Count') plt.show()

data.groupby(pd.Grouper(key='date', freq='M'))['count'].sum().plot(kind='line') plt.title('Monthly Count') plt.xlabel('Date') plt.ylabel('Count') plt.show()

5.视图信息可视化:

import pandas as pd import pymysql import matplotlib.pyplot as plt import seaborn as sns

从数据库中读取数据

conn = pymysql.connect(host='localhost', user='root', password='123456', database='test') data = pd.read_sql('SELECT * FROM processed_data', conn)

视图信息可视化

sns.boxplot(x='author', y='count', data=data) plt.title('Boxplot of Author Count') plt.xlabel('Author') plt.ylabel('Count') plt.show()

sns.scatterplot(x='date', y='count', hue='author', data=data) plt.title('Scatterplot of Author Count') plt.xlabel('Date') plt.ylabel('Count') plt.show(

用python实现 并且利用HadoopHbase ES elasticsearch clickhouse存储的爬取数据针对数据进行预处理操作并设计不少于10条不同的统计信息 可以对视图信息进行可视化 可以对视图信息进行可视化

原文地址: https://www.cveoy.top/t/topic/eFUa 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录