小编Mic*_*hal的帖子

使用另一个数据框中的索引创建一个空数据框

我有一个包含多个列和行的数据框df1.简单的例子:

    TIME T1  T2 
       1 10 100
       2 20 200
       3 30 300
Run Code Online (Sandbox Code Playgroud)

我想创建一个空的数据框df2以及稍后,添加带有计算结果的新列.

在这一刻,我的代码看起来像这样:

     df1=pd.read_csv("1.txt",index_col="TIME")

     df2=df1.copy()[[]] #copy df1 and erase all columns
Run Code Online (Sandbox Code Playgroud)

...添加两个新列:

     df2["results1"],df2["results2"]=df1["T1"]*df["T2"]*3,df1["T2"]+100
Run Code Online (Sandbox Code Playgroud)

有没有更好/更安全/更快的方法来做到这一点?是否可以创建一个空数据框df2并仅从df1复制索引?

python indexing pandas

53
推荐指数
3
解决办法
6万
查看次数

Pandas:使用 UCS-2 LE 编码读取 csv 文件

我想导入由 3rd 方应用程序使用 UCS-2 LE 编码生成的 10K csv 文件。我不想使用 csv 阅读器,例如Python UTF-16,因为文件太多。

您可以在下面找到我的代码,我正在尝试仅阅读其中的一个。我正在使用 Python 3.4 和 Pandas 0.18.1

要下载的示例文件

微量元素:

import pandas as pd

df = pd.read_csv('1.csv', 
             encoding="mbcs",
             skip_blank_lines=True,
             error_bad_lines=False,
             decimal=',',
             sep='\s+')
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

CParserError:标记数据时出错。C 错误:从第 17 行开始的字符串内有 EOF

python csv pandas

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

更改DataFrame中的子图颜色?

我想更改单个子图的颜色:
1.手动指定图的期望颜色
2.使用随机颜色

基本代码(取自1

 df = DataFrame(np.random.randn(1000, 4), index=ts.index, columns=list('ABCD'))
 df = df.cumsum()

 df.plot(subplots=True)
 plt.legend(loc='best') 
 plt.show()
Run Code Online (Sandbox Code Playgroud)

我尝试了这个:

 colors = ['r','g','b','r']                   #first option
 colors = list(['r','g','b','r'])             #second option
 colors = plt.cm.Paired(np.linspace(0,1,4))   #third option

 df.plot(subplots=True, color=colors)
Run Code Online (Sandbox Code Playgroud)

但是所有这些都不起作用。我发现2,但不确定如何更改:

 plots=df.plot(subplots=True)
 for color in plots:
   ??????
Run Code Online (Sandbox Code Playgroud)

python matplotlib pandas

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

当“索引长度不匹配”时,将索引从 DataFrame 复制到第二帧

我有一个 DataFrame df1(索引为日期时间)并且df2有很多列,不同长度的索引。
我需要结合df1使用df2,以替代指标df2。结果出现了df3

df1
                      T1
2011-09-01 00:00:00   10
2011-09-01 00:10:00   20
2011-09-01 00:20:00   30  
2011-09-01 00:30:00   40

df2
    T2   T3        
0   1.1  2.0 
1   1.2  3.0
2   1.3  4.0

df3
                      T1   T2  T3
2011-09-01 00:00:00   10  1.1  2.0
2011-09-01 00:10:00   20  1.2  3.0
2011-09-01 00:20:00   30  1.3  4.0
2011-09-01 00:30:00   40  Nan  Nan
Run Code Online (Sandbox Code Playgroud)

我想尝试,concat, join, merge, append但这些似乎不合适。
使用set_index导致出现错误:长度不匹配。

我最终尝试这样做:

  df3=pd.DataFrame(df2,index=df1.index,copy=True)
Run Code Online (Sandbox Code Playgroud)

我得到了所需的索引和列,df2但它们是空的。

python pandas

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

在Pandas数据框中移动/移动值

假设一个数据帧df的例子:

    A
0   4.3
1   75
2   8.5
3   4.0
4   98
Run Code Online (Sandbox Code Playgroud)

我需要将每个值从列移动A到每列 - 每列一个值:

  • 从第二个值开始:移到第二列B,
  • 第三列到第三列C,
  • 等等...

期望的输出:

    A     B    C   D   E
0   4.3  NaN  NaN NaN NaN
1   NaN   75  NaN NaN NaN
2   NaN  NaN  8.5 NaN NaN
3   NaN  NaN  NaN 4.0 NaN
4   NaN  NaN  NaN Nan  98
Run Code Online (Sandbox Code Playgroud)

一个想法是将每个值复制到第二列,然后在前一列中删除它或shift从一列到另一列的值,但我不知道如何应用这个...

MWE

import pandas as pd
import numpy as np

df=pd.DataFrame(data=np.random.randint(0,100,(5,5)), columns=['A','B','C','D','E'])
df.iloc[:,1:] =np.nan

df.iloc[[1],[1]] = …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

使用secondary_y轴绘制分组数据

我想绘制12个图表(每月一个图表),包括列'A''B'左侧y轴,以及'C'右侧的列。

下面的代码在左侧绘制了所有内容。

import pandas as pd
index=pd.date_range('2011-1-1 00:00:00', '2011-12-31 23:50:00', freq='1h')
df=pd.DataFrame(np.random.rand(len(index),3),columns=['A','B','C'],index=index)

df2 = df.groupby(lambda x: x.month)
for key, group in df2:
    group.plot()
Run Code Online (Sandbox Code Playgroud)

如何分离柱和使用这样的:group.plot({'A','B':style='g'},{'C':secondary_y=True})

python plot matplotlib pandas

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

Pandas groupby函数中的secondary_y范围

我想在一个简单的例子中更改辅助Y轴的范围:

MWE:

index=pd.date_range('2014-1-1 00:00:00', '2014-12-31 23:50:00', freq='1h')
df=pd.DataFrame(np.random.randn(len(index),3).cumsum(axis=0),columns=['A','B','C'],index=index)

df_month = df.groupby(lambda x: x.month)
df_month.plot(secondary_y=['C'],mark_right=False)
Run Code Online (Sandbox Code Playgroud)

groupby.plot功能中我只能为左轴设置ylim.如何更改右轴范围

我也试图循环键入groupby:

for key, group in df_month:
    ax = group[['A','B']].plot()
    fig= group[['C']].plot(secondary_y=True, ax=ax, mark_right=False)
Run Code Online (Sandbox Code Playgroud)

使用ax2 = ax1.twinx()变体,但它没有成功.

python matplotlib pandas

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

使用引号中的值和逗号作为小数点读取csv(逗号分隔文件)

我有一个包含这样数据的文件:

    2.10.2014 23:30:00,"25,1",nan,nan,nan
    2.10.2014 23:30:00,nan,"15,2",nan,nan
    2.10.2014 23:30:00,nan,nan,"125,14",nan
    2.10.2014 23:45:00,nan,0,nan,nan
Run Code Online (Sandbox Code Playgroud)

我想读这个文件.所需的输出:

    2.10.2014 23:30:00 25.1  nan   nan     nan
    2.10.2014 23:30:00 nan   15.2  nan     nan
    2.10.2014 23:30:00 nan   nan   125.14  nan
    2.10.2014 23:45:00 nan   0     nan     nan
Run Code Online (Sandbox Code Playgroud)

重要的是要注意,如果0出现值,引号就会消失.

在这一刻,我的代码看起来像这样:

     import pandas as pd
     import csv

     df=pd.read_csv("file.csv",
                    sep=',\s+',
                    quoting=csv.QUOTE_NONE, 
                    header=None, 
                    encoding="mbcs")
Run Code Online (Sandbox Code Playgroud)

结果是:

     "2.10.2014 23:30:00,""25,1"",nan,nan,nan"
Run Code Online (Sandbox Code Playgroud)

而不是quoting=csv.QUOTE_NONE我也试过使用escapechar='"'

python pandas

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

在 DataFrame 聚合后绘制特定列

我想绘制特定列的条形图和折线图。

使用agg函数,我得到了与函数一样多的新列。如果我只想绘制列的总和A和列的均值,我该怎么办B

在此处输入图片说明

您可以在下面找到我的代码,其中绘制了所有列。

index=pd.date_range('2013-1-1 00:00', '2013-12-31  23:00', freq='1h')
df=pd.DataFrame(np.random.rand(len(index),2),index=index, columns=['A','B'])

df2=df.groupby(lambda x: x.month).agg({'A' : [np.mean, np.sum], 'B': np.mean}) 

fig = plt.figure()
ax = df2['A'].plot(kind="bar");plt.xticks(rotation=0)
ax2 = ax.twinx()
ax2.plot(ax.get_xticks(),df2['B'],marker='o')
Run Code Online (Sandbox Code Playgroud)

你能给我一些如何解决这个问题的提示吗?先感谢您!

python matplotlib pandas

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

标签 统计

pandas ×9

python ×9

matplotlib ×4

csv ×1

indexing ×1

plot ×1