工作常用的数据采集案例:

从本地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读取促销活动配置

首先需要安装gspreadoauth2client库:

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中的常见场景。根据你的具体需求选择合适的代码进行使用。