python pandas读取txt文件_127、使用pandas读取文本文件

python小白社区默言_e0a2同学,是一个持之以恒的好同学。以下是他的作品。

pandas提供了一些用于将表格型数据读取为DataFrame对象的函数,其中常用read_csv和read_table读取文件。

u=885981514,1583738283&fm=173&s=282075320157D3CC4A75E0DF000050B2&w=270&h=279&img.JPEG

u=1320105152,3075380537&fm=173&s=A430E5320D475F4F187DA4DA000080B2&w=499&h=831&img.JPEG

u=2129460021,1257363133&fm=173&s=0170CD32CD704C030E656CDB0100D0B2&w=640&h=170&img.JPEG

u=318314573,3418249475&fm=173&s=2900E5129DD149CA4EED2CDF0100C0B2&w=640&h=307&img.JPEG

u=4014341549,3118509324&fm=173&s=8150613387B04C224E4548DA000050B2&w=640&h=243&img.JPEG

u=3298179393,2338941438&fm=173&s=0412E532118A454B04CD0CDA0000C0B2&w=631&h=385&img.JPEG

u=1119260675,10642161&fm=173&s=2AAC74229DAC44094E7DF0CA0000C0B1&w=540&h=197&img.JPEG

u=1610904397,2612024993&fm=173&s=E850E5131F0845490E49C1DA0000C0B2&w=640&h=302&img.JPEG

u=1306798266,3191044330&fm=173&s=A150E5324D626F2052E181DA000080B2&w=640&h=138&img.JPEG

u=115799442,3052720059&fm=173&s=0750E532177A5C2000C101DB0000C0B1&w=640&h=290&img.JPEG

u=2954666995,1710176471&fm=173&s=8050C4321F48644108C501DB0000C0B2&w=640&h=315&img.JPEG

u=3550386753,22675664&fm=173&s=2DEAE51285C84541087D85DE0000C0B2&w=630&h=295&img.JPEG

u=2985855025,3717153633&fm=173&s=90987833CD26E7205EF511CA0100C0B2&w=639&h=115&img.JPEG

0.png下面出现的例子中需要读取的文件都存放在我自己的电脑 D:Pytho\notebookpydata-book-masterch06 中。使用read_csv读入csv文件:

1.png使用read_table读入csv文件:

2.png如果读取一个文件没有标题行,可以使用header参数自动分配标题行:

3.png或者使用names参数指定需要的列表头:

4.png还可以使用index_col参数指定DataFrame的索引(也就是修改行表头):

5.png有些表格可能使用空白符或者字符串去分隔字段,这时可以使用正则表达式作为read_table分隔符:

6.png缺失值处理缺失数据经常是要么没有(空字符串),要么用某个标记值表示。源文件:

7-0.png默认情况下,pandas会用NaN进行标记:

7.png可以用一个字典为各列指定不同的NA标记值:

8.png逐块读取文本文件在处理很大的文件时,我们可能只需读取文件很小的一部分。如果只想读取几行文件,可以通过nrows参数进行指定即可:

9.png

10.png要逐块读取文件,需要设置chunksize(行数)参数:

11.pngread_csv返回的一个TextParser对象可以根据chunksize对文件进行逐块迭代。如下面的例子,将值计数聚合到“key”列中:

12.png结果为:

13.png源代码为:# coding: utf-8# # 使用pandas读取文本文件# In[1]:import numpy as npfrom pandas import Series,DataFrameimport pandas as pd# ### 方法一:使用read_csv读入csv文件# In[2]:df = pd.read_csv('D:\Python\notebook\pydata-book-master\ch06\ex1.csv')print(df)# ### 方法二:使用read_table读入csv文件# In[3]:# 不指定分隔符的情况df2 = pd.read_table('D:\Python\notebook\pydata-book-master\ch06\ex1.csv')print(df2)# In[4]:# 使用参数sep指定分隔符情况df3 = pd.read_table('D:\Python\notebook\pydata-book-master\ch06\ex1.csv',sep=',')print(df3)# In[5]:'''如果读取的文件没有列表头,使用header参数自动分配列表头'''df_ex2 = pd.read_csv('D:\Python\notebook\pydata-book-master\ch06\ex2.csv')print(df_ex2)# In[6]:# 自动分配表头df_ex2 = pd.read_csv('D:\Python\notebook\pydata-book-master\ch06\ex2.csv',header=None)print(df_ex2)# In[7]:# 使用names参数指定列表头df_ex2_name = pd.read_csv('D:\Python\notebook\pydata-book-master\ch06\ex2.csv',names=['一','二','三','四','message'])print(df_ex2_name)# In[8]:# 使用index_col参数指定DataFrame的索引(行表头)names=['一','二','三','四','message']df_ex2_DF= pd.read_csv('D:\Python\notebook\pydata-book-master\ch06\ex2.csv',names=names,index_col='message')print(df_ex2_DF)# ### 使用正则表达式作为read_table分隔符# In[9]:list(open('D:\Python\notebook\pydata-book-master\ch06\ex3.txt'))# In[10]:# 使用正则表达式s+处理空白符分隔result = pd.read_table('D:\Python\notebook\pydata-book-master\ch06\ex3.txt',sep='s+')print(result)# ### 缺失值处理# In[11]:# 默认使用NaN填充缺失值df_na = pd.read_csv('D:\Python\notebook\pydata-book-master\ch06\ex5.csv')print(df_na)# In[12]:# 使用isnull转为布尔值来标记NA值pd.isnull(df_na)# In[13]:print(df_na)# 使用一个字典把各列指定值转为NA值new_na = {'message':['foo'],'c':[11],'something':['two']}new_na_values = pd.read_csv('D:\Python\notebook\pydata-book-master\ch06\ex5.csv',na_values=new_na)print(\n new_na_values\n',new_na_values)# ### 逐块读取文本文件# In[14]:# 读取一个10000行5列的.csv文件all_Csv = pd.read_csv('D:\Python\notebook\pydata-book-master\ch06\ex6.csv')print(all_Csv)# In[15]:# 只读取5行文件part_Csv = pd.read_csv('D:\Python\notebook\pydata-book-master\ch06\ex6.csv',nrows=5)print(part_Csv)# In[16]:# 根据chunksize对文件进行逐块迭代chunker = pd.read_csv('D:\Python\notebook\pydata-book-master\ch06\ex6.csv',chunksize=1000)print(chunker)# In[17]:# 统计 key 这一列中各个值出现的次数tot = Series([])for piece in chunker: tot = tot.add(piece['key'].value_counts(),fill_value=0) #print(tot) # 对结果进行降序排序new_tot = tot.sort_values(ascending=False)print(new_tot)# In[18]:# 选取前10行的结果显示df_tot = new_tot[:10]print(df_tot)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值