本次打卡:一夜回到解方前QAQ
不是有意要这样写,确实没有把前面的东西用起来
基本思路:
- 分析题目,查看文件:
company_data.csv 中的信息:
证券代码 = 企业
日期 = 时间年份
收入类型 = 产业类型
收入额 = 收入额
- 读取数据并简要查看
import numpy as np
import pandas as pd
path1 = r".\company\Company.csv"
path2 = r"./company/Company_data.csv" # 两种写法均可以
df1 = pd.read_csv(path1, encoding="utf-8", engine="python")
df2 = pd.read_csv(path2, encoding="utf-8", engine="python")
print(df1.head())
print("-"*66)
print(df2.head())
print("Company", df1.shape, type(df1))
print("Company_data", df2.shape, type(df2))
-
转化数学公式
p(Xi) = 某个企业某年某产业收入 / 该企业改年所有产业的总收入 = 同一个证券代码 日期不变(同一日期)某个收入类型的收入额 / 同一证券代码 同一年 的收入总和
关键是如何实现:??
这里便使用了分组的形式:
先对分母进行操作:
df2_time = df2.groupby(["证券代码", "日期"])["收入额"].sum()
print(df2_time, type(df2_time))
a = np.array([])
a = df2_time.values
# print(a.reshape(-1, 1))
df2_time_sum = a.reshape(-1, 1)
再对分子操作
这里涉及到长宽表的使用:
df2.pivot_table(index=["证券代码", "日期"],
columns = "收入类型",
values = "收入额")
b = np.array([])
b = df2.pivot_table(index=["证券代码", "日期"],
columns = "收入类型",
values = "收入额").values
构成 p :
这里的思路类似于第一章的练习题
p = b/a.reshape(-1, 1)
I = (p * np.log(p)).sum() # 出现警告
此处卡壳(因为打印出的 I 是 Nan)
这我就不明白了。数据怎么就是空值呢?
(略过)
- 将上面的到的数据写入到表1中。
怎么对应的相同的项目去写入数据??
又不会了??