我正在创建一个Python脚本,它获取股票数据并生成一个图表,但我面临的问题是股票数据不是每个星期六和星期天都可用,所以日期之间有一些差距。因此,图表看起来像这样:
的数据
正如你所看到的,这之间有很大的差距。我想要的是消除这个差距,这意味着删除不必要的日期,这是由matplotlib自动生成的,没有任何数据使它看起来像这样。有没有人知道怎么做,我尝试了3天的一切,但没有得到任何解决方案。
我的代码:
import pandas as pd
import pytz
import matplotlib.pyplot as plt
import json
data = json.loads(open("data.json", "r").read())
local_timezone = pytz.timezone("Asia/Kolkata")
data = data[:501]
# Extracting relevant data and creating a pandas DataFrame
timestamps = [
pd.to_datetime(row["Data"][2]["ScalarValue"])
for row in data
]
values = [float(row["Data"][3]["ScalarValue"]) for row in data]
df = pd.DataFrame({"Timestamps": timestamps, "Values": values})
df.set_index("Timestamps", inplace=True)
plt.figure(figsize=(12, 6))
plt.plot(df.index, df["Values"], label="Original Data")
plt.xlabel("Timestamps")
plt.ylabel("Price")
plt.title(
"Stock Price"
)
plt.legend()
plt.grid(True)
plt.show()
字符串data.json
文件:
[
{
"Data": [
{
"ScalarValue": "Nifty Bank"
},
{
"ScalarValue": "price"
},
{
"ScalarValue": "2023-01-20 06:58:00.000000000"
},
{
"ScalarValue": "42644.2"
}
]
},
{
"Data": [
{
"ScalarValue": "Nifty Bank"
},
{
"ScalarValue": "price"
},
{
"ScalarValue": "2023-01-20 06:59:00.000000000"
},
{
"ScalarValue": "42642.25"
}
]
},
...
]
型
1条答案
按热度按时间ccgok5k51#
您可以从
datetime
使用weekday()
函数。您可以尝试使用完整的data.json
文件。字符串
weekday()函数返回一周中的第几天,其范围为
0
到6
。0
对应于 Monday,6
对应于 Sunday。要跳过 Saturday 和 Sunday,您可以避免考虑工作日5
和6
。