小编Ste*_*ele的帖子

如何使用Pandas在现有的Excel文件中保存新工作表?

我想使用excel文件来存储用python详细说明的数据.我的问题是我无法将图纸添加到现有的Excel文件中.在这里,我建议使用示例代码来解决此问题

import pandas as pd
import numpy as np

path = r"C:\Users\fedel\Desktop\excelData\PhD_data.xlsx"

x1 = np.random.randn(100, 2)
df1 = pd.DataFrame(x1)

x2 = np.random.randn(100, 2)
df2 = pd.DataFrame(x2)

writer = pd.ExcelWriter(path, engine = 'xlsxwriter')
df1.to_excel(writer, sheet_name = 'x1')
df2.to_excel(writer, sheet_name = 'x2')
writer.save()
writer.close()
Run Code Online (Sandbox Code Playgroud)

此代码将两个DataFrame保存为两个表,分别名为"x1"和"x2".如果我创建两个新的DataFrame并尝试使用相同的代码添加两个新工作表'x3'和'x4',原始数据将丢失.

import pandas as pd
import numpy as np

path = r"C:\Users\fedel\Desktop\excelData\PhD_data.xlsx"

x3 = np.random.randn(100, 2)
df3 = pd.DataFrame(x3)

x4 = np.random.randn(100, 2)
df4 = pd.DataFrame(x4)

writer = pd.ExcelWriter(path, engine = 'xlsxwriter')
df3.to_excel(writer, sheet_name = 'x3')
df4.to_excel(writer, sheet_name …
Run Code Online (Sandbox Code Playgroud)

python pandas openpyxl xlsxwriter

51
推荐指数
7
解决办法
7万
查看次数

如何替换Pandas.DataFrame上的整个列

我想用另一个DataFrame中的另一列替换Pandas DataFrame上的整个列,一个例子将阐明我在寻找什么

import pandas as pd
dic = {'A': [1, 4, 1, 4], 'B': [9, 2, 5, 3], 'C': [0, 0, 5, 3]}
df = pd.DataFrame(dic)
Run Code Online (Sandbox Code Playgroud)

df是

'A' 'B' 'C'
 1   9   0
 4   2   0
 1   5   5
 4   3   3
Run Code Online (Sandbox Code Playgroud)

现在我有另一个名为df1的数据框,其中包含"E"列

df1['E'] = [ 4, 4, 4, 0]
Run Code Online (Sandbox Code Playgroud)

我想用df1的列"E"替换df的列"B"

'A' 'E' 'C'
 1   4   0
 4   4   0
 1   4   5
 4   0   3
Run Code Online (Sandbox Code Playgroud)

我试图在很多方面使用.replace()方法,但我没有得到任何好处.你能帮助我吗?

python pandas

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

使用"chunksize"和/或"iterator"打开带有pandas的选定行

我有一个大的csv文件,我用pd.read_csv打开它,如下所示:

df = pd.read_csv(path//fileName.csv, sep = ' ', header = None)
Run Code Online (Sandbox Code Playgroud)

由于文件非常大,我希望能够在行中打开它

from 0 to 511
from 512 to 1023
from 1024 to 1535
...
from 512*n to 512*(n+1) - 1
Run Code Online (Sandbox Code Playgroud)

其中n = 1,2,3 ......

如果我将chunksize = 512添加到read_csv的参数中

df = pd.read_csv(path//fileName.csv, sep = ' ', header = None, chunksize = 512)
Run Code Online (Sandbox Code Playgroud)

我打字

df.get_chunk(5)
Run Code Online (Sandbox Code Playgroud)

我可以打开从0到5的行,或者我可以使用for循环将文件分成512行的部分

data = []
for chunks in df:
    data = data + [chunk]
Run Code Online (Sandbox Code Playgroud)

但是这很无用,因为文件必须完全打开并且需要时间.如何只读取512*n到512*(n + 1)的行.

环顾四周,我经常看到"chunksize"与"iterator"一起使用,如下所示

 df = pd.read_csv(path//fileName.csv, sep = ' ', header = None, …
Run Code Online (Sandbox Code Playgroud)

python csv pandas

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

如何更改 Pandasplot.pie() 上的颜色

我正在与熊猫饼图上的颜色作斗争。示例代码将有助于隔离我在当前竞赛中的问题。

import numpy as np
import pandas as pd
a = np.zeros(31)
b = np.zeros(69) + 1
A = np.concatenate(( a, b) )
np.random.shuffle(A)
pd.Series(A).value_counts().plot.pie( autopct = "%.2f%%" )
plt.show()
Run Code Online (Sandbox Code Playgroud)

正如你在这里看到的在此输入图像描述

结果是分别具有蓝色和绿色的饼图。我正在寻找的是类似的东西

pd.Series(A).value_counts().plot.pie( autopct = "%.2f%%", colours = ['red', 'pink'] )
Run Code Online (Sandbox Code Playgroud)

但似乎没有那么容易的事情。请问你能帮帮我吗?

python pandas

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

[matplotlib]:理解“set_ydata”方法

我试图了解如何使用“set_ydata”方法,我在 matplotlib 网页上找到了很多例子,但我只发现了“set_ydata”被“淹没”在大而难以理解的代码中的代码。

我想要一个简短易懂的代码来帮助我理解“set_ydata”的工作原理。这里有一个简短的代码,提供了下面的情节

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-3, 3, 0.01)
j = 1
y = np.sin( np.pi*x*j ) / ( np.pi*x*j )
fig = plt.figure()
ax = fig.add_subplot(111)
line, = ax.plot(x, y)
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

现在,使用以下代码,我删除了在“ax”子图上绘制的线,我使用“set_ydata”来修改图,最后我想再次绘制线,但我没有找到任何做最后的东西步

line.remove()
j = 2
y = np.sin( np.pi*x*j ) / ( np.pi*x*j )
line.set_ydata(y)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

不是“plt.draw()”也不是“plt.show()”绘制任何东西。你能建议我画一条新线吗?

python matplotlib

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

如何在Pandas DataFrame上添加列标签

我不明白如何在熊猫数据框上添加列名,一个简单的例子将阐明我的问题:

dic = {'a': [4, 1, 3, 1], 'b': [4, 2, 1, 4], 'c': [5, 7, 9, 1]}
df = pd.DataFrame(dic)
Run Code Online (Sandbox Code Playgroud)

现在,如果我输入df,我会得到

   a  b  c
0  4  4  5
1  1  2  7
2  3  1  9
3  1  4  1
Run Code Online (Sandbox Code Playgroud)

现在说,我只是通过总结上一个数据列来生成另一个数据帧

a = df.sum()
Run Code Online (Sandbox Code Playgroud)

如果我输入“ a”,我会得到

a     9
b    11
c    22
Run Code Online (Sandbox Code Playgroud)

看起来像一个数据框,没有索引,只有一列没有名称。所以我写了

a.columns = ['column']
Run Code Online (Sandbox Code Playgroud)

要么

a.columns = ['index', 'column']
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,Python都很高兴,因为他没有向我提供任何错误消息。但是,即使我键入“ a”,也无法在任何地方看到列名。怎么了

python pandas

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

在jupyter上设置matplotlib后端以获得随时间变化的图

我想从Jupyter笔记本页面中绘制出我的情节.我记得"%matplotlib qt"应该是在脚本开头键入的正确命令

%matplotlib qt
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-3, 3, 0.01)
y = np.sin(np.pi*x)/(np.pi*x)
plt.figure() 
plt.plot(x, y)
plt.show()
Run Code Online (Sandbox Code Playgroud)

但它不起作用,因为我得到一个内联图和以下警告

Warning: Cannot change to a different GUI toolkit: qt. Using notebook instead.
Run Code Online (Sandbox Code Playgroud)

你能帮我理解我的jupyter有什么问题吗?

我想在浏览器之外绘图的原因是,它看起来是唯一一种在Jupyter上有一个随时间变化的情节的方法,实际上我可以使用以下代码轻松地在spyder上完成这项工作

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-3, 3, 0.01)
fig = plt.figure()
ax = fig.add_subplot(111)
for j in range(1, 10):
    y = np.sin(np.pi*x*j)/(np.pi*x*j)
    line, = ax.plot(x, y, 'b')
    plt.pause(0.3)
    plt.draw()
    line.remove()
Run Code Online (Sandbox Code Playgroud)

但是在这个阶段,这段代码并没有在Jupyter上正常运行.是否有任何替代和有趣的方式来提供在Jupyter上随时间变化的情节?

python matplotlib jupyter-notebook

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

矩形函数的数值傅里叶变换

这篇文章的目的是正确理解Python或Matlab上的数值傅立叶变换,其中分析傅立叶变换是众所周知的.为此我选择矩形函数,它的解析表达式及其傅里叶变换在这里报告 https://en.wikipedia.org/wiki/Rectangular_function

这里是Matlab中的代码

x = -3 : 0.01 : 3;
y = zeros(length(x));
y(200:400) = 1;
ffty = fft(y);
ffty = fftshift(ffty);
plot(real(ffty))
Run Code Online (Sandbox Code Playgroud)

这里是Python中的代码

import numpy as np
import matplotlib.pyplot as plt
x = np.arange(-3, 3, 0.01)
y = np.zeros(len(x))
y[200:400] = 1
ffty = np.fft.fft(y)
ffty = np.fft.fftshift(ffty)
plt.plot(np.real(ffty))
Run Code Online (Sandbox Code Playgroud)

在这两个编程语言中,我得到了一些问题的结果:首先,傅里叶变换并不像预期的那样真实,而且即使选择真实部分,解决方案看起来也不像解析解:事实上第一个情节这里报道的至少应该是形状,第二个图是我从计算中得到的.

有没有人可以建议我如何分析计算矩形函数的傅里叶变换?

在此输入图像描述

在此输入图像描述

python matlab signal-processing fft

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

用元素逐个总结两个不同索引的pandas数据帧

我有两个pandas数据帧,比如df1和df2,每个都有一些大小,但是有不同的索引,我想逐个元素地总结这两个数据帧.我为您提供了一个简单的例子来更好地理解问题:

dic1 = {'a': [3, 1, 5, 2], 'b': [3, 1, 6, 3], 'c': [6, 7, 3, 0]}
dic2 = {'c': [7, 3, 5, 9], 'd': [9, 0, 2, 5], 'e': [4, 8, 3, 7]}
df1 = pd.DataFrame(dic1)
df2 = pd.DataFrame(dic2, index = [4, 5, 6, 7])
Run Code Online (Sandbox Code Playgroud)

所以df1会

   a  b  c
0  3  3  6
1  1  1  7
2  5  6  3
3  2  3  0
Run Code Online (Sandbox Code Playgroud)

和df2将是

   c  d  e
4  7  9  4
5  3  0  8
6 …
Run Code Online (Sandbox Code Playgroud)

python numpy dataframe pandas

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