Tag: pandas

将excel或csv文件转换为pandas多级数据框

我已经给了一个相当大的Excel文件(5k行),也作为一个CSV,我想成为一个pandas多级DataFame。 该文件的结构如下所示: SampleID OtherInfo Measurements Error Notes sample1 stuff more stuff 36 6 26 7 37 8 sample2 newstuff lots of stuff 25 6 27 7 测量次数是可变的(有时为零)。 在任何信息之间没有完整的空白行,并且“测量”和“错误”列在具有其他(string)数据的行上是空的; 这可能会使parsing(?)更困难。 有没有简单的方法来自动化这个转换? 我最初的想法是首先用Pythonparsing文件,然后在循环中将数据填充到DataFrame插槽中,但我不知道如何实现它,或者甚至是最佳的操作过程。 提前致谢!

pandas:保存为Excel编码问题

我有一个类似的问题, 这里提到的一个,但没有任何build议的方法为我工作。 我有一个中等大小的utf-8 .csv文件,其中包含很多非ascii字符。 我是从一个列中的特定值拆分文件,然后我想将每个获得的数据框保存为一个.xlsx文件,保留字符。 这不起作用,因为我得到一个错误: UnicodeDecodeError: 'ascii' codec can't decode byte 0xff in position 7: ordinal not in range(128) 这是我试过的: 明确使用xlsxwriter引擎。 这似乎没有改变任何东西。 定义一个函数(下面)来改变编码并丢弃不好的字符。 这也不会改变任何东西。 def changeencode(data): cols = data.columns for col in cols: if data[col].dtype == 'O': data[col] = data[col].str.decode('utf-8').str.encode('ascii', 'ignore') return data 把所有的攻击性字符改成其他的。 仍然没有效果(引用的错误是在这个变化后获得的)。 将文件编码为utf-16 (我相信这是正确的编码,因为我希望能够在excel之后操作文件)也无济于事。 我相信这个问题是在文件本身(因为2和3),但我不知道如何解决它。 我会很感激任何帮助。 该文件的开始被粘贴在下面。 "Submitted","your-name","youremail","phone","miasto","cityCF","innemiasto","languagesCF","morelanguages","wiek","partnerCF","messageCF","acceptance-795","Submitted Login","Submitted From","2015-12-25 14:07:58 […]

如何使用index和pandas.read_excel来读取excel表格?

我知道这很容易与pandas.io.parser ExcelFile完成,但文档说,他们从未来版本的pandas下降ExcelFile,所以我想知道如何用replaceread_excel()做到​​这一点。 该文档说,您可以通过执行以下操作使用图表索引: read_excel('path_to_file.xls', 0, index_col=None, na_values=['NA']) 每次我尝试这个,我得到以下错误: XLRDError: No sheet named <0>

pandasdataframe更换速度缓慢

我有一个Excel文件(.xlsx),大约有800行,128列,网格中的数据非常密集。 大约有9500个单元我试图用Pandas数据框取代单元格的值: xlsx = pandas.ExcelFile(filename) frame = xlsx.parse(xlsx.sheet_names[0]) media_frame = frame[media_headers] # just get the cols that need replacing from_filenames = get_from_filenames() # returns ~9500 filenames to replace in DF to_filenames = get_to_filenames() media_frame = media_frame.replace(from_filenames, to_filenames) frame.update(media_frame) frame.to_excel(filename) replace()需要60秒。 任何方式来加速呢? 这不是一个庞大的数据或任务,我期待大pandas的动作要快得多。 仅供参考我试着用同样的文件在CSV中做同样的处理,但节省的时间是最less的( replace()约50秒)

将pandas / matplotlib图像直接写入XLSX文件

我正在pandas / matplotlib中生成图表,并希望将它们写入XLSX文件。 我不想创build本机Excel图表; 我只是把这些情节写成非交互式的图像。 我正在使用XlsxWriter库/引擎 。 我find的最接近的解决scheme是这个SO问题的答案 ,build议使用XlsxWriter.write_image()方法。 但是,此方法似乎将文件名作为其input。 我试图以编程方式传递来自pandas / matplotlib plot()调用的直接输出,例如像这样的东西: h = results.resid.hist() worksheet.insert_image(row, 0, h) # doesn't work 或这个: s = df.plot(kind="scatter", x="some_x_variable", y="resid") worksheet.insert_image(row, 0, s) # doesn't work 有没有办法做到这一点,首先将图像写入磁盘文件的解决方法? 更新 下面的答案让我在正确的轨道上,并接受。 我需要做一些改变,主要是(我认为),因为我正在使用Python 3,也许一些API的变化。 这是解决scheme: from io import BytesIO import matplotlib.pyplot as plt imgdata = BytesIO() fig, ax = […]

使用Pandas阅读带有多个标题的Excel表格

我有一个Excel头像多个头像: _________________________________________________________________________ ____|_____| Header1 | Header2 | Header3 | ColX|ColY |ColA|ColB|ColC|ColD||ColD|ColE|ColF|ColG||ColH|ColI|ColJ|ColDK| 1 | ds | 5 | 6 |9 |10 | ………………………………… 2 | dh | …………………………………………………. 3 | ge | …………………………………………………. 4 | ew | …………………………………………………. 5 | er | …………………………………………………. 现在,在这里你可以看到前两列没有标题,而是其他列有标题Header1,Header2和Header3。 所以我想阅读这张表格,并将其与其他具有相似结构的表格合并。 我想将它合并到第一列“ColX”上。 现在我正在这样做: import pandas as pd totalMergedSheet = pd.DataFrame([1,2,3,4,5], columns=['ColX']) file […]

Pythonpandas,我怎样才能读取没有列标签的Excel文件,然后插入列标签?

我有列表,我想插入它作为列标签。 但是当我使用大pandas的read_excel时,他们总是把第0行看作列标签。 我怎样才能读取pandas数据框的文件,然后把列表作为列标签 orig_index = pd.read_excel(basic_info, sheetname = 'KI12E00') 0.619159 0.264191 0.438849 0.465287 0.445819 0.412582 0.397366 \ 0 0.601379 0.303953 0.457524 0.432335 0.415333 0.382093 0.382361 1 0.579914 0.343715 0.418294 0.401129 0.385508 0.355392 0.355123 这是我的列名个人名单 print set_index [20140109, 20140213, 20140313, 20140410, 20140508, 20140612] 我想要如下所示的数据框 20140109 20140213 20140313 20140410 20140508 20140612 0 0.619159 0.264191 0.438849 0.465287 0.445819 […]

ExcelFile VS. 在pandas中的read_excel

我正在潜入大pandas并进行实验。 至于从Excel文件读取数据。 我想知道使用ExcelFile和read_excel有什么区别。 两者似乎都可以工作(虽然语法稍微不同,可以预料),并且文档支持两者。 在这两种情况下,文档描述的方法都是一样的:“将Excel表读入DataFrame”和“将Excel表读入pandas DataFrame”。 ( read_excel文档和excel_file文档 ) 我在这里看到了SO的答案,它使用了无论是处理差异还是W / O。 此外,谷歌search没有产生讨论这个问题的结果。 WRT我的testing,这些似乎相当: path = "test/dummydata.xlsx" xl = pd.ExcelFile(path) df = xl.parse("dummydata") # sheet name 和 path = "test/dummydata.xlsx" df = pd.io.excel.read_excel(path, sheetname=0) 除了后者为我省了一行外,这两者之间是否有区别,是否有理由使用其中之一? 谢谢!

如何写入一个现有的Excel文件而不破坏公式与openpyxl?

当你用以下方式写入Python的excel文件时: import pandas from openpyxl import load_workbook book = load_workbook('Masterfile.xlsx') writer = pandas.ExcelWriter('Masterfile.xlsx') writer.book = book writer.sheets = dict((ws.title, ws) for ws in book.worksheets) data_filtered.to_excel(writer, "Main", cols=['Diff1', 'Diff2']) writer.save() 公式和指向现有工作表中图表的链接将被保存为值。 如何覆盖这种行为,以保存公式和图表的链接?

用不同的格式将pandasDataFrame写入Excel

我正在尝试将一个pandasDataFrame写入一个.xlsx文件,其中不同的数字列将具有不同的格式。 例如,一些只显示两位小数,一些显示没有,一些会被格式化为带有“%”符号的百分数等。 我注意到, DataFrame.to_html()有一个formatters参数,可以做到这一点,将不同的格式映射到不同的列。 但是, DataFrame.to_excel()方法没有类似的参数。 我们所拥有的最多的是一个对所有数字都是全局的float_format 。 我已经阅读了许多与我的问题至less部分相关的SOpost,例如: 使用较旧的openpyxl引擎一次应用一个单元格的格式 。 这是我取得最大成功的方法。 但是,这意味着编写循环来应用格式逐个单元格,记住偏移量等。 通过将表数据本身更改为string来渲染百分比 。 改变实际数据的路线激发了我在写入Excel之前,通过在每一列上调用round()来处理小数位格式化 – 这也起作用,但是我想避免改变数据。 什么其他人,主要是关于date格式 在pandasAPI中有没有其他更方便的Excel相关函数/属性可以在这里帮助,或者在openpyxl类似的东西,或者有些方法可以将输出格式元数据直接指定到DataFrame中的每个列上,然后在不同的下游进行解释输出器?