# 第一个项目 **Repository Path**: haobinjun/first-project ## Basic Information - **Project Name**: 第一个项目 - **Description**: 从零开始的项目协作学习仓库 · 新同学入门 Git 与团队开发 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-08-30 - **Last Updated**: 2026-09-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 第一个项目 > **领域:经济分析(从财报数据入手)** > 数据集:8 家文旅上市公司的真实财报 + 股价 + ESG 数据(17,000 行,SQLite) > 这个仓库是你们三个的。你能推上来代码,这里就是你的。 --- ## 先说清楚一件事 **这个项目里要做什么,由你们决定,不由别人替你们决定。** 你们被丢到了一份真实数据面前(见 `docs_数据字典.md`)。领域是定的——经济/财务分析。但具体问什么、怎么分析、画出什么、得出什么结论,**全是你们自己想**。 没有人会给你们派活。没有人会告诉你们"做 A 还是做 B"。这是和上课最大的区别——上课是老师出题你做,这里是你们自己出题自己答。 这会难受。因为从没有题到有题,是最难的一步。但这一步走过去了,你们就真懂什么是"做项目"了。 --- ## 你们的起点 ### 数据集(已经准备好) - 文件:`data/tourism_finance.db`(2.3 MB,SQLite) - 内容:8 家文旅上市公司(黄山旅游、峨眉山A、中国中免、宋城演艺…)的真实财报数据 - 13 张表,17,000 行,包括:财务指标、日线股价、三大报表、ESG 评分、分红历史 - 详细字段看 `docs_数据字典.md` ### 工具栈 - Python 3 + Pandas + Jupyter Notebook(或 Streamlit) - 不需要 Java,不需要前端框架 - 安装:`pip install pandas jupyter matplotlib` 就能开始 --- ## 第一周的任务:提一个问题,答一张图 **每个人,从这 17,000 行数据里,提出一个你自己好奇的问题,然后把它回答出来。** 交付物(每人一份): 1. 一个 Jupyter Notebook(`.ipynb`),里面是从数据到结论的完整过程 2. 至少一张图 3. 一段话结论(200 字以内,说清楚你发现了什么) ### 什么样的问题算好问题 好问题长这样(**这些是示范,不是让你选的题目**): - "中国中免和宋城演艺,谁更赚钱?赚的钱质量一样吗?" → 比较 + 追问 - "财报发出来那天,股价会跳吗?业绩好的就涨吗?" → 假设 + 验证 - "8 家公司里,谁的 ESG 分数和股价一起涨?" → 关联 + 排序 - "文旅行业哪一家去年最危险?拿什么指标衡量'危险'?" → 定义 + 排名 坏问题长这样(**不要做这种**): - "统计一下营收"(没有为什么,没有比较,只是搬数字) - "画一张股价图"(没有问题,只是画图) - "做一个大屏"(没有问题,只是炫技) **判断标准**:你的问题里有没有"为什么 / 是不是 / 哪个更 / 什么因素"。有,就是好问题。 --- ## 怎么从零开始(保姆级,但只带一次) ### 第一步:装环境 1. 装 Python 3(python.org,下载时勾 Add to PATH) 2. 打开终端(Win 按 Win+R 输 cmd),执行: ``` pip install pandas jupyter matplotlib sqlite3 ``` 3. 进项目目录,启动 Jupyter: ``` cd E:\first-project jupyter notebook ``` 浏览器会自动打开,点 New → Python 3,就能写代码了。 ### 第二步:看数据 在 Notebook 里敲: ```python import sqlite3 import pandas as pd con = sqlite3.connect('data/tourism_finance.db') # 看 8 家公司都是谁 pd.read_sql("SELECT * FROM companies", con) # 看黄山旅游的财务数据 pd.read_sql("SELECT * FROM financial_data WHERE stock_code='sh600054'", con) ``` 跑一遍,看到表格出来,你就有感觉了。 ### 第三步:提你的问题 翻 `docs_数据字典.md`,看到哪个字段你好奇,就把它变成一个问题。写在 Notebook 第一个 Markdown 格子里。 ### 第四步:写代码回答它 不会写就查、就问、就抄别人的。这里没有"作弊",Pandas 没人能手写。 ### 第五步:画图 ```python import matplotlib.pyplot as plt # 你的数据.plot(kind='bar') # plt.show() ``` ### 第六步:推上来 ```bash git add 你的名字_问题简述.ipynb git commit -m "分析: 你的问题简述" git push origin master ``` --- ## 关于分工——别提前分 **不要一开始就说"你做前端、你做后端"。** 这把人钉死了,而且你们还没做过,根本不知道自己擅长什么。 第一周每个人都独立提一个问题、独立答出来。**做完之后**,你们自己会发现: - 谁画图好看、谁抠数据细、谁能把结论讲清楚、谁查文档快。 那时候再分工,分的是**真实长处**,不是拍脑袋。 --- ## 协作规则 1. **永远不要直接改别人的 `.ipynb` 文件。** Notebook 容易冲突,各做各的。 2. **提交信息写清楚你问了什么。** 别只写"修改"。 3. **看不懂别人的代码就问。** 没有"蠢问题",卡住不问才蠢。 4. **遇到 git 冲突不要慌。** 喊我,或者自己搜"git pull 冲突怎么解决"。 5. **数据不要重新生成或修改 `data/` 下的 db 文件。** 那是只读数据集。 --- ## 长期愿景 财报只是入口。经济分析这条线,后面可以扩展到任何数据:宏观指标、行业数据、消费数据、另类数据。但**先把这 17,000 行财报数据吃透**,把第一个问题答漂亮,再说后面。 一步一步来。 --- # 第二轮:合力做一份《文旅行业财报体检报告》 > 第一轮你们各做各的,三个人交了三份 solo 分析。现在第二轮:**合力产出一个东西**。 ## 这一轮要做什么 三个人合力产出一份 **《文旅行业财报体检报告》**,输出形式不是 notebook,而是一个**非技术人能打开看懂的东西**——Streamlit 单页应用,或者一份结构化 markdown 报告(放在仓库 `报告/` 目录下,带图表)。形式你们三个商量着定,但必须满足一条:**让没写过代码的人也能看懂**。 ## 分工表 报告分三个部分,每人负责一部分: | 谁 | 负责的部分 | 要回答的问题 | |----|-----------|--------------| | **冯艳钰** | 估值与预期分析 | 挑一家公司,分析市场给它定价的"预期"是什么——当前股价交易的是业绩、是故事、还是预期?估值在什么区间,和同行比贵不贵 | | **王春燕** | 行业全景扫描 | 8 家公司放一起比——谁的营收在涨、谁在亏、谁的负债最重、谁最危险。做一张"行业体检表",给每家公司打个标签 | | **赵雅婷** | 单家风险拆解 | 挑一家公司(不是华侨城),把它怎么走到今天这步的拆透——财务结构、利润从哪来、风险从哪长出来 | ## 这一轮的关键规则 ### 1. 内容必须互相引用,不能各做各拼一起 三部分不是独立模块,是**互相依赖**的: - 王春燕的行业扫描里,"最危险的公司"要和赵雅婷拆解的那家对得上(或者解释为什么不对得上) - 冯艳钰做估值分析时,要拿王春燕的行业数据当基准——"这家比同行贵"必须基于王春燕算的行业均值 - 赵雅婷拆解的公司,要被冯艳钰拿来做估值判断 **这意味着你们必须先沟通:王春燕先定下来"行业扫描"用什么口径(哪几家、哪些指标),冯艳钰和赵雅婷才能引用。** 不是各做各最后拼一起。 ### 2. 开分支做,不准都推 master 第一轮你们都往 master 推,没有协作。这一轮必须用分支: ```bash # 每人开自己的分支 git checkout -b fengyanru/round2 git checkout -b wangchunyan/round2 git checkout -b zhaoyating/round2 # 在自己分支上做完,推上来 git push origin 你的分支名 # 然后在 Gitee 上发起 Pull Request,合并到 master ``` 合并 PR 的时候,**另一个人负责 review 后再合并**——不准自己合自己的。这逼你们看懂彼此的代码和结论。 ### 3. 最终合并进同一个文件 不管你们选 Streamlit 还是 markdown 报告,**三部分最终要合并进同一个文件**——这个文件会冲突,冲突就解决。这是协作的必经之路。 ## 思考过程草稿(必交,比 notebook 重要) 做的过程中,在仓库根目录建一个文件:`思考过程_你的名字.md`,**随手记**,不是事后补写。 ### ✅ 记什么 - 打开数据第一反应是什么 - 怎么想到这个问题的 - 试过哪些方向、放弃了哪个、为什么换 - 卡住的时候往哪走(问 AI?翻数据字典?翻第一轮的 notebook?) - 给 AI 的第一句话大致是什么 - AI 回了之后你改没改主意 ### ❌ 不记什么 - 不整理、不润色 - 不写"我经过深思熟虑决定"这种话 - 不事后合理化——允许写"我先随便问了 AI 一句,它说……" ### 硬规则 这份草稿**必须和你的 notebook 同一次 commit 推上来**。Git 时间戳会暴露你是不是事后补的——先做完再补草稿,时间对不上,一眼能看出来。 ## 时间 两周内完成。第一周自己推自己分支,第二周互相 review + 合并 + 收尾。 --- 有问题随时问。我不会替你们决定问什么,但我会在你们卡住的时候帮你们把代码跑通。 —— 郝彬珺