pythonpandas解析(读取、写⼊)CSV⽂件
1. 使⽤ pandas 读取 CSV ⽂件
原始数据包含了公司员⼯的数据:
Name Hire Date Salary Sick Days remaining
Graham Chapman03/15/1450000.0010
John Cleese06/01/1565000.008
Eric Idle05/12/1445000.0010
Terry Jones11/01/1370000.003
Terry Gilliam08/12/1448000.007
Michael Palin05/23/1366000.008将 CSV ⽂件读⼊ pandas DataFrame 快速⽽直接:
import pandas
df = ad_csv('hrdata.csv')
print(df)
就这样简单:仅仅三⾏代码,⽽且其中只有⼀⾏真正有⽤。ad_csv() 打开、分析并读取提供的 CSV ⽂件,并将数据存储在DataFrame 中,打印 DataFrame 会产⽣以下输出:
以下是值得注意的⼏点:
⾸先,pandas 识别到 CSV 的第⼀⾏包含列名,并⾃动使⽤它们。
但是,pandas 也在 DataFrame 中使⽤从零开始的整数索引,那是因为没有告诉它我们的索引应该是什么。
此外,如果查看列的数据类型,会看到 pandas 已将 Salary and Sick Days 剩余列正确转换为数字,但 Hire Date 列仍然是 String,这在交互模式下很容易确认:
让我们⼀次解决这些问题,要使⽤其他列作为 DataFrame 的索引,添加 index_col 可选参数:
df2 = ad_csv('hrdata.csv', index_col='Name')
print(df2)
现在,Name 字段就是我们的 DataFrame 索引:
接下来,让我们修复「Hire Date」字段的数据类型。可以使⽤ parse_dates 可选参数强制pandas 将数据作为⽇期读取,该参数定义为要作为⽇期处理的列名列表:
df3 = ad_csv('hrdata.csv', index_col='Name', parse_dates=['Hire Date'])
print(df3)
注意输出的差异:
现在⽇期格式正确,可以在交互模式下轻松确认:
如果 CSV ⽂件的第⼀⾏中没有列名,则可以使⽤ names 可选参数来提供列名的列表。 如果要覆盖第⼀⾏中提供的列名,也可以使⽤此选项。 在这种情况下,还必须使⽤header = 0可选参数告诉 ad_csv()忽略现有列名:
df4 = ad_csv('hrdata.csv',
index_col='Employee',
parse_dates=['Hired'],
header=0,
names=['Employee', 'Hired','Salary', 'Sick Days'])
print(df4)
请注意,由于列名称已更改,因此还必须更改index_col和parse_dates可选参数中指定的列,现在这会产⽣以下输出:
2. 使⽤ pandas 写⼊ CSV ⽂件
当然,如果⽆法将数据从 pandas 中输出,那 pandas 可能没有多⼤好处。将 DataFrame 写⼊CSV ⽂件就像读取⼀个⽂件⼀样简单。下⾯让我们将带有新列名称的数据写⼊新的 CSV ⽂件:
df5 = ad_csv('hrdata.csv',
index_col='Employee',
parse_dates=['Hired'],
header=0,
names=['Employee', 'Hired', 'Salary', 'Sick Days'])
<_csv('hrdata_modified.csv')
此代码与上述读取代码之间的唯⼀区别是 print(df) 替换为 df.to_csv(),新的 CSV ⽂件如下所⽰:python怎么读csv数据
参考
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论