यह बहुत आसान होना चाहिए, लेकिन मुझे कई समस्याएं आ रही हैं। बात यह है कि, मैं इस पोस्ट जैसा कुछ करना चाहता हूं, लेकिन (1 ) मेरे पास डेटाटाइम फ़ील्ड है, इसलिए मेरे पास मेरे दिनांक कॉलम में घंटे, मिनट और सेकंड हैं, (२) मैं दिन के हिसाब से एक लाइन ग्राफ बनाना चाहता हूं।

तो, यह मेरा डेटा है:

date                   col1        col2
2020-01-01 00:01:020   20          500
2020-01-02 00:01:020   10          500
2020-01-02 00:01:000   20          500
2020-01-02 00:01:021   20          500
2020-02-05 20:11:010   30          500
2020-02-05 10:01:020   10          500
.
.
.

इसलिए, जैसा कि मैंने ऊपर उल्लेख किया है, मैं जो चाहता हूं वह col1 के दैनिक औसत को प्लॉट करना है। मैंने इसके साथ शुरुआत की:

df.groupby('date')['col1'].mean()

वह घंटे, मिनट और सेकंड के कारण काम नहीं किया। बाद में, मैंने यह कोशिश की:

df["day"] = df["date"].dt.day
df.groupby("day")["col1"].mean().plot(kind="line")

मैंने इसे लगभग पूरा कर लिया है, लेकिन स्तंभ दिवस वास्तव में दिन नहीं है, बल्कि एक संख्या है जो वर्ष में दिन की स्थिति का प्रतिनिधित्व करती है, मुझे लगता है। तो इस साजिश को कैसे बनाया जाए इस पर कोई विचार?

0
dummmmf 11 जुलाई 2021, 16:40

2 जवाब

आप सही में क्या चाहते हैं? समय के बिना तारीख? इसे इस्तेमाल करे:

df["day"] = df["date"].apply(lambda l: l.date())
0
user3081797 11 जुलाई 2021, 14:02

चूँकि इस प्रश्न में seaborn और plotly टैग भी हैं,

sns.lineplot यह ऑपरेशन बिना करता है groupby mean डिफ़ॉल्ट अनुमानक के रूप में प्रति x उदाहरण के लिए माध्य मान की गणना करेगा। एरर शेडिंग सेट ci=None निकालने के लिए।

आयात और सेटअप:

import pandas as pd
import seaborn as sns
from matplotlib import pyplot as plt

df = pd.DataFrame({
    'date': ['2020-01-01 00:01:020', '2020-01-02 00:01:020',
             '2020-01-02 00:01:000', '2020-01-02 00:01:021',
             '2020-02-05 20:11:010', '2020-02-05 10:01:020'],
    'col1': [20, 10, 20, 20, 30, 10],
    'col2': [500, 500, 500, 500, 500, 500]
})
df['date'] = pd.to_datetime(df['date'])

प्लॉटिंग कोड:

# Seaborn Line Plot x is the date, y is col1 default estimator is mean
ax = sns.lineplot(data=df, x=df['date'].dt.date, y='col1', ci=None)
ax.tick_params(axis='x', rotation=45)  # Make X ticks easier to read
plt.tight_layout()
plt.show()

plot 1 seaborn


साजिश रचने के लिए groupby mean< लें /a> और एक px.line बनाएं।

आयात और सेटअप:

import pandas as pd
import plotly.express as px

df = pd.DataFrame({
    'date': ['2020-01-01 00:01:020', '2020-01-02 00:01:020',
             '2020-01-02 00:01:000', '2020-01-02 00:01:021',
             '2020-02-05 20:11:010', '2020-02-05 10:01:020'],
    'col1': [20, 10, 20, 20, 30, 10],
    'col2': [500, 500, 500, 500, 500, 500]
})
df['date'] = pd.to_datetime(df['date'])

प्लॉटिंग कोड:

plot_values = df.groupby(df['date'].dt.date)["col1"].mean()
fig = px.line(plot_values)
fig.show()

plot 2

1
Henry Ecker 11 जुलाई 2021, 14:40