Tom*_*mmy 5 python numpy python-3.x pandas
我已经使用pd.read_excel使用熊猫将xls文件读入Python
我正在尝试清理数据,但我走出了困境。
每个记录之间都有一个空白行。在示例图片中,它是excel第4、9和11行。
有一个注释列,在示例中(请参阅链接)指定为“ col_F”。每个记录都有至少一个包含文本的单元格。创建此xls文件的人将较长的注释拆分为多个单元格。
我想将col_F中用于特定记录的所有数据连接到一个单元格中。
一旦弄清楚如何正确连接col_F,我还将修剪空白记录。
我正在使用Python 3.5.0,numpy 1.12.0和pandas 0.19.2
这是我到目前为止的内容:
import numpy as np
import pandas as pd
data = pd.read_excel("C:/blah/blahblah/file.xls", header=0, nrows=10000)
df = pd.DataFrame(data)
Run Code Online (Sandbox Code Playgroud)
我感谢任何建议或见解!
谢谢!
弄清楚了!!!强烈感谢诺福克数据科学俱乐部的帮助。
导入 pandas、sqlite 和 os 包
import pandas as pd
import sqlite3
import os
Run Code Online (Sandbox Code Playgroud)
指定文件路径和文件名
filepath = "C:/blah/blahblah/randomfolder"
filename = "raw_data.xlsx"
filePathFileName = filepath + "/" + filename
outputPathFileName = filepath + "/cleaned_" + filename
outputFileName = "cleaned_" + filename
Run Code Online (Sandbox Code Playgroud)
使用 pandas 读取 Excel 文件。
df = pd.read_excel(filePathFileName, header=0, nrows=14)
Run Code Online (Sandbox Code Playgroud)
删除空白行
df.dropna(how='all', inplace=True)
Run Code Online (Sandbox Code Playgroud)
填补我们数据中的空白
df.ffill(inplace=True)
Run Code Online (Sandbox Code Playgroud)
创建一个sqlite数据库和一个到sqlite数据库的连接
con = sqlite3.connect(":memory:")
con.isolation_level = None
cur = con.cursor()
Run Code Online (Sandbox Code Playgroud)
在 sqlite 中为我们的数据创建一个表
df.to_sql('example_data', con)
Run Code Online (Sandbox Code Playgroud)
SQL 查询来聚合我们的数据
df_pdsql = pd.read_sql_query("SELECT col_A, col_B, col_C, col_D, col_E, GROUP_CONCAT(col_F, ' ') AS col_F FROM example_data GROUP BY col_A", con)
Run Code Online (Sandbox Code Playgroud)
将我们的 df 写入 xlsx 文件
df_pdsql.to_excel(outputPathFileName, sheet_name='test', index=False)
Run Code Online (Sandbox Code Playgroud)
让用户知道文件所在位置
print("Your new file is located in: " + outputPathFileName)
Run Code Online (Sandbox Code Playgroud)
与 sqlite 数据库的紧密连接
con.close()
Run Code Online (Sandbox Code Playgroud)