以下是一个结合Pandas和Django的示例Demo,展示如何在Django项目中读取、处理和展示Pandas数据。
Pandas和Django的示例Demo
前置条件:
安装python
基础设置
确保已安装Django和Pandas:
pip install django pandas
Installing collected packages: sqlparse, asgiref, django
Successfully installed asgiref-3.8.1 django-5.2.2 sqlparse-0.5.3
创建一个Django项目和应用:
django-admin startproject pandas_django_demo
cd pandas_django_demo
python manage.py startapp data_app
建立后django会生成下面目录

模型与数据处理
在data_app/models.py
中定义一个简单模型:
from django.db import models
class DataRecord(models.Model):
name = models.CharField(max_length=100)
value = models.FloatField()
timestamp = models.DateTimeField(auto_now_add=True)
在data_app/views.py
中使用Pandas处理数据:
import pandas as pd
from django.shortcuts import render
from .models import DataRecord
def data_view(request):
# 从数据库获取数据并转为DataFrame
queryset = DataRecord.objects.all().values()
df = pd.DataFrame.from_records(queryset)
# 示例操作:计算统计值
stats = {
'mean': df['value'].mean(),
'max': df['value'].max(),
'min': df['value'].min()
}
# 将DataFrame转为HTML表格
html_table = df.to_html(classes='table table-striped', index=False)
return render(request, 'data_display.html', {
'stats': stats,
'html_table': html_table
})
模板展示
创建templates/data_app/data_display.html
:
<!DOCTYPE html>
<html>
<head>
<title>Pandas + Django Demo</title>
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container mt-4">
<h3>数据统计</h3>
<ul>
<li>平均值: {{ stats.mean }}</li>
<li>最大值: {{ stats.max }}</li>
<li>最小值: {{ stats.min }}</li>
</ul>
<h3 class="mt-4">原始数据</h3>
{{ html_table|safe }}
</div>
</body>
</html>
URL配置
在项目urls.py
中添加路由:
from django.contrib import admin
from django.urls import path
from data_app import views
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.data_view, name='data_view'),
]
或者用手工得方式添加测试记录

运行步骤
创建admin用户
python mange.py createsuperuser
输入admin,输入[email protected],输入密码admin123
后台登录输入admin/admin123
-
启动开发服务器:
python manage.py runserver
-
访问
http://127.0.0.1:8000
查看结果。
数据导入示例
在Django shell中生成测试数据:
import random
from data_app.models import DataRecord
from django.utils import timezone
for i in range(10):
DataRecord.objects.create(
name=f"Item_{i}",
value=random.uniform(10, 100),
timestamp=timezone.now()
)
或者手工输入dataRecord得记录
运行结果
python manage.py runserver
June 05, 2025 - 20:05:00
Django version 5.2.2, using settings 'pandas_django_demo.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
WARNING: This is a development server. Do not use it in a production setting. Use a production WSGI or ASGI server instead.
For more information on production servers see: https://docs.djangoproject.com/en/5.2/howto/deployment/
[05/Jun/2025 20:05:07] "GET /data_app/ HTTP/1.1" 200 460
[05/Jun/2025 20:05:08] "GET /data_app/ HTTP/1.1" 200 460
[05/Jun/2025 20:05:09] "GET /data_app/ HTTP/1.1" 200 460
[05/Jun/2025 20:05:09] "GET /data_app/ HTTP/1.1" 200 460
[05/Jun/2025 20:05:09] "GET /data_app/ HTTP/1.1" 200 460
[05/Jun/2025 20:05:09] "GET /data_app/ HTTP/1.1" 200 460
[05/Jun/2025 20:05:10] "GET /data_app/ HTTP/1.1" 200 460
[05/Jun/2025 20:05:10] "GET /data_app/ HTTP/1.1" 200 460
[05/Jun/2025 20:05:10] "GET /data_app/ HTTP/1.1" 200 460
[05/Jun/2025 20:05:10] "GET /data_app/ HTTP/1.1" 200 460
[05/Jun/2025 20:05:10] "GET /data_app/ HTTP/1.1" 200 460
[05/Jun/2025 20:05:16] "GET / HTTP/1.1" 200 3493
打开浏览器
