小编spa*_*r10的帖子

OverflowError:Python int 太大,无法转换为 C long-Matplotlib

我有一个非常简单的数据框,如下所示。我试图操纵 x 轴(日期),使其从 1996 年 31 月 12 日开始,到 2016 年 31 月 12 日结束,增量为 365 天。

Datafame:

Date             A             B  
1996-31-12       10            3
1997-31-03       5             6
1997-31-07       7             5
1997-30-11       3             12
1997-31-12       4             10
1998-31-03       5             8
.
.
.
2016-31-12       3             9

#change date string to datetime variable
df12.Date = pd.to_datetime(df12.Date)

fig, ax = plt.subplots()
ax.plot_date(df12.Date,df12.A)
ax.plot_date(df12.Date,df12.B)
ax.xaxis.set_major_locator(mdates.YearLocator())

ax.xaxis.grid(True, which="major")
ax.yaxis.grid()
ax.xaxis.set_major_formatter(mdates.DateFormatter('%b\n%Y''))
plt.tight_layout()
plt.show()
Run Code Online (Sandbox Code Playgroud)

当我尝试运行上面的代码时,我收到一条错误消息,我不确定它的含义 - OverflowError: Python int太大,无法转换为C long。有人知道这意味着什么吗?如果没有,还有其他方法可以做我想做的事吗?

matplotlib pandas

5
推荐指数
0
解决办法
1540
查看次数

按列总和划分 Pandas 数据框中的列

我有一个数据框,我想将 A 列中的每一行除以 A 列的总和,并使其成为数据框中的一个新列。

Example:

        Col A   New Col
        2       .22
        3       .33
        4       .44
Total = 9       1.00
Run Code Online (Sandbox Code Playgroud)

我尝试对 Col A 求和,然后尝试除以“Total”,但因为 Total 不是一列而是一行,所以它不起作用。我只是为新列中的每一行获取 NaN。

df['New Col']= (df['ColA']/df.loc['Total']) 
Run Code Online (Sandbox Code Playgroud)

我知道你也可以在一行代码中集成一个总和计算,而不是创建一个总计行,但不知道如何做到这一点,并且在网上找不到任何东西。

df['New Col']= (df['ColA']/df.sum()) 
Run Code Online (Sandbox Code Playgroud)

想法?

python sum dataframe pandas

4
推荐指数
1
解决办法
1万
查看次数

Matplotlib饼图与'所有其他类别'

我创建了一个matplotlib饼图:

df.plot(kind='pie', subplots=True, figsize=(6, 4))
Run Code Online (Sandbox Code Playgroud)

我的数据框由两列组成 - 国家和价值(%分布),列出了大约25个国家/地区.我想只按价值(按最高百分比)绘制前10个国家,并在图中计算剩余的国家%值,并将其命名为"所有其他国家".如何使用matplotlib使用.plot函数执行此操作?

Country   Value
Albania    4%
Brazil     3%
Denmark    5%
France     10%
Mexico     3%
Nigeria    15%
Spain      4%
U.S.       5%
Run Code Online (Sandbox Code Playgroud)

python matplotlib

3
推荐指数
1
解决办法
2613
查看次数

Pandas 数据框过滤器和 For 循环

我有一个包含许多列的数据框。我正在尝试过滤其中一列(“区域”)并根据“区域”列中的这 4 个区域中的每一个创建一个单独的数据框。然后在这 4 个单独的数据帧中的每一个上运行包含大量计算的大代码块,而不必单独重写大代码块 4 次。

我知道我可以使用 .isin 函数进行列过滤,并为我的 4 个地区(美国、新兴市场、欧洲、亚洲)执行此操作:

US = df[df['Region'].isin('US')]
EM = df[df['Region'].isin('EM')]
Europe = df[df['Region'].isin('Europe')]
Asia = df[df['Region'].isin('Asia')]
Run Code Online (Sandbox Code Playgroud)

然后在 4 个新数据帧上运行我的代码块。但是我会分别执行我的大块计算代码 4 次,这太混乱了。我怎样才能在循环中做到这一点,所以我只需要一次编写我的大代码块?如果除了 for 循环之外,我还可以使用另一个函数来执行此操作,这也很棒。感谢任何帮助 - 尝试学习。

虚拟代码:

df = pd.DataFrame({'a':[1,2,3,4,5,6], 'b':['cats','dogs','birds','pianos','elephant','dinos'], 'Region' : ['EM', 'US', 'US', 'Europe', 'Asia', 'Asia']})
Run Code Online (Sandbox Code Playgroud)

python for-loop pandas pandas-groupby

2
推荐指数
1
解决办法
4382
查看次数

标签 统计

pandas ×3

python ×3

matplotlib ×2

dataframe ×1

for-loop ×1

pandas-groupby ×1

sum ×1