pandas如何读取excel(pandas如何读取csv文件)

Excel表格网 2022-12-06 14:00 编辑:admin 256阅读

1. pandas如何读取csv文件

python利用pandas中的read_csv()读取单个excel文件,因此我们只需要批量生成文件的名称即可,然后循环读取文件名。

2. pandas读取csv文件乱码

引入pandas使用pandas下的read_csv方法,读取csv文件,参数是文件的路径,这是一个相对路径,是相对于当前工作目录的,那么如何知道当前的工作目录呢?

使用os.getcwd()方法获取当前工作目录读取前三后数据,查看一下是否读取正确,显然都是乱码,这是什么问题呢?

我们需要设定参数encoding,也就是编码方式,如果你不设定编码方式,默认是utf8,现在csv文件是gbk编码的,所以需要使用encoding='gbk'我用的编辑器是eric4,注意,eric4默认是不支持中文的,如果你想要显示中文,前提是设置正确的编码,在preferences中设置成utf8即可回到pandas,我们可以有更多选项来设置打开数据时的操作:

3. pandas如何读取csv文件的固定列

pycharm导出运行数据需要导入三方库包。表格数据需要通过pandas库包来进行,具体操作是:文件名.to_excel("新文件名称.xlsx")的形式导出为excel文件,如果文件过大可以用csv,我们只需要将(新文件名称.xlsx").xlsx的后缀改为.csv就可以导出csv。

4. pandas读取csv文件找不到

使用pandas读取的方法是

pandas.to_csv()

得到的结果是dataframe格式,再用numpy库转一下

具体代码:

import pandas as pd

import numpy as np

file_content = pd.to_csv(r'C:\新建文件夹\result123.csv')

row = np.array(file_content)

lx = row.tolist(),希望我的回答对亲们有帮助

5. pandas读取csv文件的某一行

读一读pandas文档关于readcsv函数的介绍

有parsedate和dateparser参数的

parsedate可以实现高效默认转换,会自动识别大多数时间文本格式完成转换

如果有特殊format

可以用dateparse参数传入一个自定义解析函数

6. pandas读取csv文件指定列

Pandas能很好地处理来自各种不同来源的数据,比如 Excel 表格、CSV 文件、SQL 数据库,甚至还能处理存储在网页上的数据。

7. pandas读取csv文件路径名

量化框架是一个用于回测和交易的python框架,它功能丰富,可以让你聚焦在设计可重用的交易策略、指标和分析上,而不用花大量时间在构建基础框架上面。

一、量化框架的优点:

1、github开源,策略编写简单快速

2、安装方便,除了matplotlib外,不依赖其他外部lib

3、支持ib等券商实时交易

4、数据来源支持csv文件,在线数据源或pandas格式,同时支持多数据来源、多策略

5、支持TA-lib指标,方便支持自定义指标的开发,集成pyfolio分析模块等

6、支持品种多,运行速度快:pandas 矢量运算、多策略并行运算

二、量化框架的缺点:

1、gpl 3.0授权,更改框架需要开源

2、画图界面风格比较老旧

3、框架代码抽象比较多,使用了大量的元编程,学习比较费劲

8. pandas读取csv文件权限

用 pandas.read_table()读txt吧,速度提升很明显

9. pandas读取csv文件出错

现有一个 csv文件,包含'CNUM'和'COMPANY'两列,数据里包含空行,且有内容重复的行数据。

要求:

1)去掉空行;

2)重复行数据只保留一行有效数据;

3)修改'COMPANY'列的名称为'Company_New‘;

4)并在其后增加六列,分别为'C_col',‘D_col',‘E_col',‘F_col',‘G_col',‘H_col'。

一,使用 python Pandas来处理: import pandas as pd

import numpy as np

from pandas import DataFrame,Series

def deal_with_data(filepath,newpath):

file_obj=open(filepath)

df=pd.read_csv(file_obj) # 读取csv文件,创建 DataFrame

df=df.reindex(columns=['CNUM','COMPANY','C_col','D_col','E_col','F_col','G_col','H_col'],fill_value=None) # 重新指定列索引

df.rename(columns={'COMPANY':'Company_New'}, inplace = True) # 修改列名

df=df.dropna(axis=0,how='all') # 去除 NAN 即文件中的空行

df['CNUM'] = df['CNUM'].astype('int32') # 将 CNUM 列的数据类型指定为 int32

df = df.drop_duplicates(subset=['CNUM', 'Company_New'], keep='first') # 去除重复行

df.to_csv(newpath,index=False,encoding='GBK')

file_obj.close()

if __name__=='__main__':

file_path=r'C:\Users\12078\Desktop\python\CNUM_COMPANY.csv'

file_save_path=r'C:\Users\12078\Desktop\python\CNUM_COMPANY_OUTPUT.csv'

deal_with_data(file_path,file_save_path)

二,使用 VBA来处理: Option Base 1

Option Explicit

Sub main()

On Error GoTo error_handling

Dim wb As Workbook

Dim wb_out As Workbook

Dim sht As Worksheet

Dim sht_out As Worksheet

Dim rng As Range

Dim usedrows As Byte

Dim usedrows_out As Byte

Dim dict_cnum_company As Object

Dim str_file_path As String

Dim str_new_file_path As String

'assign values to variables:

str_file_path = "C:\Users\12078\Desktop\Python\CNUM_COMPANY.csv"

str_new_file_path = "C:\Users\12078\Desktop\Python\CNUM_COMPANY_OUTPUT.csv"

Set wb = checkAndAttachWorkbook(str_file_path)

Set sht = wb.Worksheets("CNUM_COMPANY")

Set wb_out = Workbooks.Add

wb_out.SaveAs str_new_file_path, xlCSV 'create a csv file

Set sht_out = wb_out.Worksheets("CNUM_COMPANY_OUTPUT")

Set dict_cnum_company = CreateObject("Scripting.Dictionary")

usedrows = WorksheetFunction.Max(getLastValidRow(sht, "A"), getLastValidRow(sht, "B"))

'rename the header 'COMPANY' to 'Company_New',remove blank & duplicate lines/rows.

Dim cnum_company As String

cnum_company = ""

For Each rng In sht.Range("A1", "A" & usedrows)

If VBA.Trim(rng.Offset(0, 1).Value) = "COMPANY" Then

rng.Offset(0, 1).Value = "Company_New"

End If

cnum_company = rng.Value & "-" & rng.Offset(0, 1).Value

If VBA.Trim(cnum_company) <> "-" And Not dict_cnum_company.Exists(rng.Value & "-" & rng.Offset(0, 1).Value) Then

dict_cnum_company.Add rng.Value & "-" & rng.Offset(0, 1).Value, ""

End If

Next rng

'loop the keys of dict split the keyes by '-' into cnum array and company array.

Dim index_dict As Byte

Dim arr_cnum()

Dim arr_Company()

For index_dict = 0 To UBound(dict_cnum_company.keys)

ReDim Preserve arr_cnum(1 To UBound(dict_cnum_company.keys) + 1)

ReDim Preserve arr_Company(1 To UBound(dict_cnum_company.keys) + 1)

arr_cnum(index_dict + 1) = Split(dict_cnum_company.keys()(index_dict), "-")(0)

arr_Company(index_dict + 1) = Split(dict_cnum_company.keys()(index_dict), "-")(1)

Debug.Print index_dict

Next

'assigns the value of the arrays to the celles.

sht_out.Range("A1", "A" & UBound(arr_cnum)) = Application.WorksheetFunction.Transpose(arr_cnum)

sht_out.Range("B1", "B" & UBound(arr_Company)) = Application.WorksheetFunction.Transpose(arr_Company)

'add 6 columns to output csv file:

Dim arr_columns() As Variant

arr_columns = Array("C_col", "D_col", "E_col", "F_col", "G_col", "H_col") '

sht_out.Range("C1:H1") = arr_columns

Call checkAndCloseWorkbook(str_file_path, False)

Call checkAndCloseWorkbook(str_new_file_path, True)

Exit Sub

error_handling:

Call checkAndCloseWorkbook(str_file_path, False)

Call checkAndCloseWorkbook(str_new_file_path, False)

End Sub

' 辅助函数:

'Get last row of Column N in a Worksheet

Function getLastValidRow(in_ws As Worksheet, in_col As String)

getLastValidRow = in_ws.Cells(in_ws.Rows.count, in_col).End(xlUp).Row

End Function

Function checkAndAttachWorkbook(in_wb_path As String) As Workbook

Dim wb As Workbook

Dim mywb As String

mywb = in_wb_path

For Each wb In Workbooks

If LCase(wb.FullName) = LCase(mywb) Then

Set checkAndAttachWorkbook = wb

Exit Function

End If

Next

Set wb = Workbooks.Open(in_wb_path, UpdateLinks:=0)

Set checkAndAttachWorkbook = wb

End Function

Function checkAndCloseWorkbook(in_wb_path As String, in_saved As Boolean)

Dim wb As Workbook

Dim mywb As String

mywb = in_wb_path

For Each wb In Workbooks

If LCase(wb.FullName) = LCase(mywb) Then

wb.Close savechanges:=in_saved

Exit Function

End If

Next

End Function

三,输出结果:

两种方法输出结果相同:

四,比较总结:

Python pandas 内置了大量处理数据的方法,我们不需要重复造轮子,用起来很方便,代码简洁的多。

Excel VBA 处理这个需求,使用了 数组,字典等数据结构(实际需求中,数据量往往很大,所以一些地方没有直接使用遍历单元格的方法),以及处理字符串,数组和字典的很多方法,对文件的操作也很复杂,一旦出错,调试起来比python也较困难,代码已经尽量优化,但还是远比 Python要多。

顶一下
(0)
0%
踩一下
(0)
0%
相关评论
我要评论
点击我更换图片