居然翻了 pandas.read_csv 的船

简介: 居然翻了 pandas.read_csv 的船

不怕前路坎坷,只怕从一开始就走错了方向


Pandas 是python的一个数据分析包,纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas 就是为解决数据分析任务生的,无论是数据分析还是机器学习项目数据预处理中, Pandas 无处不在。


最近掉进一坑,差点铸成大错。实在没想到居然栽在pandas.read_csv上了,这里分享一下,希望引起大家注意,顺便重温一下read_csv的各种参数。


业务数据不方便拿出来演示,为尽可能复现,这里我手造了一份,另存为 income.csv 文件。


640.png


看起来都是正经的数据


翻船记


读取csv文件小菜一碟


import numpy as np
import pandas as pd
df = pd.read_csv(r'C:\...\income.csv',encoding='utf-8')


看看数据信息:


df.info()
RangeIndex: 6 entries, 0 to 5
Data columns (total 1 columns):
 #   Column  Non-Null Count  Dtype 
---  ------  --------------  ----- 
 0   income  6 non-null      object
dtypes: object(1)
memory usage: 176.0+ bytes


诶,正经的数据怎么成了object?


不管它,硬转一发:


df=pd.DataFrame(df,dtype=np.float)


然后就报错了,1000被读成了字符串。


640.png

其实这里我还掉进了另一个坑,使用了一个已被弃用的 .convert_objects 方法。这种方法更硬,直接把string转成了NaN,所以后面各种操作流畅且错误地进行着....这都是 pandas 没升级的锅,定期检查升级包太有必要了(pip 的高阶玩法


说回刚才的问题,1,000被读成了字符串是因为csv文件中它使用了千位分隔符。问题其实非常简单,设置一下 thousands 参数就行了


df2 = pd.read_csv(r'C:\...\income.csv',encoding='utf-8',thousands =',')


看一下info,格式是正经的 float


df2.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 6 entries, 0 to 5
Data columns (total 1 columns):
 #   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  
 0   income  6 non-null      float64
dtypes: float64(1)


往下继续


df2.describe()
     income
count 6.000000
mean 16934.983333
std 40695.203980
min 0.000000
25% 32.425000
50% 300.000000
75% 875.000000
max 100000.000000


一切正常!


pandas.read_csv()参数


640.png


pandas.read_csv()的参数特别多,除了filepath,其他均可缺省。参数的具体含义这里就不赘述,还想复习一下的同学可以直接去看官方文档,虽然不可能所有都记住,还是需要对每个参数都留点印象!

相关文章
|
1月前
|
存储 关系型数据库 数据处理
Pandas CSV 文件
10月更文挑战第27天
13 0
|
数据挖掘 Python
【Python】数据分析:结构化数分工具 Pandas | Series 与 DataFrame | 读取CSV文件数据
【Python】数据分析:结构化数分工具 Pandas | Series 与 DataFrame | 读取CSV文件数据
84 1
|
4月前
|
分布式计算 大数据 数据处理
别说你会用Pandas
别说你会用Pandas
|
4月前
|
Python
Pandas 读取 Excel 斜着读
Pandas 读取 Excel 斜着读
30 0
|
4月前
|
Python
【Pandas】Pandas的DataFrame按行插入list数据或者读取一行并存为csv文件
本文提供了使用Pandas库对DataFrame进行操作的示例代码。
224 0
|
7月前
|
数据挖掘 索引 Python
Python 教程之 Pandas(15)—— 使用 pandas.read_csv() 读取 csv
Python 教程之 Pandas(15)—— 使用 pandas.read_csv() 读取 csv
73 0
|
存储 数据处理 索引
pandas&numpy 数据处理~~两万字超全(中)
pandas&numpy 数据处理~~两万字超全(中)
86 0
|
数据处理 索引 Python
pandas&numpy 数据处理~~两万字超全(上)
pandas&numpy 数据处理~~两万字超全(上)
71 0
|
XML JSON 数据处理
pandas&numpy 数据处理~~两万字超全(下)
pandas&numpy 数据处理~~两万字超全(下)
90 0
|
数据可视化 BI 数据处理
pandas导入数据并可视化基于每年乘客数
pandas导入数据并可视化基于每年乘客数
pandas导入数据并可视化基于每年乘客数