【Python10年经验总结】第一课 电商平台销售数据分析实践分解 – 数据读取(Data Reading)
工作常用的数据采集案例:
从本地CSV文件读取销售订单数据
从Excel文件中读取商品基础信息
从JSON文件中读取用户评价数据
从MySQL数据库读取实时销售记录
使用API接口获取当日销售数据
从多个CSV文件合并读取历史销售数据
从XML文件中提取商品分类结构
从Google Sheets读取促销活动配置
从AWS S3下载销售日志并加载到DataFrame
从Hive数仓中读取分区表数据
我们将分别展示如何从这些不同的数据源读取数据,并将其加载到Pandas DataFrame中。以下是每个场景的完整代码示例:
1. 从本地CSV文件读取销售订单数据
import pandas as pd
# 假设我们的销售订单数据存储在一个名为'sales_orders.csv'的文件中
file_path = 'sales_orders.csv'
# 使用pandas读取csv文件
df_sales_orders = pd.read_csv(file_path)
# 打印出前5行数据
print(df_sales_orders.head())
2. 从Excel文件中读取商品基础信息
import pandas as pd
# 假设我们的商品基础信息存储在一个名为'product_info.xlsx'的Excel文件中
file_path = 'product_info.xlsx'
# 使用pandas读取Excel文件
df_product_info = pd.read_excel(file_path)
# 打印出前5行数据
print(df_product_info.head())
3. 从JSON文件中读取用户评价数据
import pandas as pd
# 假设我们的用户评价数据存储在一个名为'user_reviews.json'的文件中
file_path = 'user_reviews.json'
# 使用pandas读取json文件
df_user_reviews = pd.read_json(file_path)
# 打印出前5行数据
print(df_user_reviews.head())
4. 从MySQL数据库读取实时销售记录
首先需要安装mysql-connector-python
库:
pip install mysql-connector-python
import pandas as pd
import mysql.connector
# 连接到MySQL数据库
conn = mysql.connector.connect(
host='localhost',
user='your_username',
password='your_password',
database='your_database'
)
# SQL查询语句
query = "SELECT * FROM sales_records"
# 使用pandas读取SQL查询结果
df_sales_records = pd.read_sql(query, conn)
# 关闭数据库连接
conn.close()
# 打印出前5行数据
print(df_sales_records.head())
5. 使用API接口获取当日销售数据
假设API返回的是JSON格式的数据:
import pandas as pd
import requests
# API URL
url = 'https://api.example.com/sales/today'
# 发送GET请求
response = requests.get(url)
# 将响应内容转换为DataFrame
df_daily_sales = pd.DataFrame(response.json())
# 打印出前5行数据
print(df_daily_sales.head())
6. 从多个CSV文件合并读取历史销售数据
import pandas as pd
import glob
# 获取所有CSV文件路径
path = r'historical_sales/*.csv'
all_files = glob.glob(path)
# 合并所有CSV文件到一个DataFrame
df_historical_sales = pd.concat((pd.read_csv(f) for f in all_files), ignore_index=True)
# 打印出前5行数据
print(df_historical_sales.head())
7. 从XML文件中提取商品分类结构
import pandas as pd
import xml.etree.ElementTree as ET
# 假设我们的商品分类结构存储在一个名为'product_categories.xml'的文件中
tree = ET.parse('product_categories.xml')
root = tree.getroot()
# 提取数据到列表
data = []
for category in root.findall('.//category'):
data.append({
'id': category.find('id').text,
'name': category.find('name').text,
'parent_id': category.find('parent_id').text if category.find('parent_id') is not None else None
})
# 将列表转换为DataFrame
df_product_categories = pd.DataFrame(data)
# 打印出前5行数据
print(df_product_categories.head())
8. 从Google Sheets读取促销活动配置
首先需要安装gspread
和oauth2client
库:
pip install gspread oauth2client
你需要在Google Cloud Platform创建一个项目并启用Google Sheets API,然后下载服务账号密钥文件(例如credentials.json
)。
import pandas as pd
import gspread
from oauth2client.service_account import ServiceAccountCredentials
# 设置权限范围
scope = ["https://spreadsheets.google.com/feeds", "https://www.googleapis.com/auth/drive"]
# 添加凭证
creds = ServiceAccountCredentials.from_json_keyfile_name('credentials.json', scope)
client = gspread.authorize(creds)
# 打开Google Sheet
sheet = client.open("Promotion Activities").sheet1
# 获取所有记录
records = sheet.get_all_records()
# 将记录转换为DataFrame
df_promotion_activities = pd.DataFrame(records)
# 打印出前5行数据
print(df_promotion_activities.head())
9. 从AWS S3下载销售日志并加载到DataFrame
首先需要安装boto3
库:
pip install boto3
import pandas as pd
import boto3
from io import StringIO
# 创建S3客户端
s3_client = boto3.client('s3')
# 下载文件
bucket_name = 'your-bucket-name'
object_key = 'sales_logs/sales_log_2023.csv'
obj = s3_client.get_object(Bucket=bucket_name, Key=object_key)
# 读取文件内容
file_content = obj['Body'].read().decode('utf-8')
# 使用StringIO将字符串转换为文件对象
data = StringIO(file_content)
# 使用pandas读取CSV文件
df_sales_logs = pd.read_csv(data)
# 打印出前5行数据
print(df_sales_logs.head())
10. 从Hive数仓中读取分区表数据
首先需要安装pyhive
库:
pip install pyhive[hive]
import pandas as pd
from pyhive import hive
# 连接到Hive
conn = hive.Connection(host='your_host', port=your_port, username='your_username', database='your_database')
# SQL查询语句
query = "SELECT * FROM partitioned_table WHERE ds='2023-01-01'"
# 使用pandas读取SQL查询结果
df_partitioned_data = pd.read_sql(query, conn)
# 关闭数据库连接
conn.close()
# 打印出前5行数据
print(df_partitioned_data.head())
以上代码涵盖了从不同数据源读取数据并加载到Pandas DataFrame中的常见场景。根据你的具体需求选择合适的代码进行使用。