pandas用法归纳+简单的文件处理命令

古人云:温故而知新。最近把pandas的一些常用的方法以及一些处理文件的常用命令用法总结了一下,因为再不复习就真忘了。

image

01

pandas

Q1:有时候列数很多,不可能手动输入列名,可能直接利用默认生成的列名进行切片等操作。

f1.iloc[1:3,4:6]
#这是取f1的1,2行中的4,5列,不包括结束点的索引行或列
#如果要取全部行,前后范围都不用写,但冒号不可省。

Q2:如果是直接用DataFrame函数生成DF,为列命名用columns=(),如果用pd.read_table等从文件读取,列命名用names=()

a={'a':[1,2,3],'b':['zy','wd','sd']}
f = DataFrame(a,columns=['b','a'])
#对某一列修改值,在上面取列的基础上用 = 赋值

Q3:对Series和DataFrame进行索引重排reindex的问题

对索引的重排不在原始数据上修改,赋值到一个新的Series或DataFrame

对于不存在的索引对应的值为NA

对于Series

obj = Series([12,34,2423],index = ['a','c','g'])
on = obj.reindex(['c','g','d'])
print(on)
#fill_value=4:把NA填成4
#method=ffill/bfill:对于重排加入的新索引对应的值,依照它前面的值填充还是依照后面的值

对于DataFrame

在reindex的时候是要求原Dataframe的index是排序的,才能用method=“ffill/bfill”,所以如果原df的index的不是排序的,那么就会报如下错!

index must be monotonic increasing or decreasing

解决方法:

要么在reindex之前加上sort_index()。这样会影响ffill的填充~,因为是按照sort_index()排序之后的填充,然后按照reindex的顺序输出,所以可能表面上看新增的一行可能并不直接是他上一行的数据。

如果不想对index 进行排序,使用ffill(),那么不要使用method = "ffill",直接在括号最外面写.ffill(),这样可以不需要对原DF的索引进行排序就可以按照reindex的顺序进行ffill()

Q4:举例:筛选出data中列a大于5的数据出来

df1=data[data['a']>5]
#筛选出列a大于5的行
#data['a']>5是一个布尔型的返回值

这个算是一个比较常用且好用的方法了~

Q5:如何操作两个DataFrame进行运算?

两个series进行对齐,没有对应索引的相加后为NA

DataFrame:要索引和列都对应才能进行运算,不对应(没有重叠)的都为NA

s1={'a':13,'b':20}
a=Series(s1)
s2={'b':30,'c':20}
b=Series(s2)
c=a+b
print(c)
# 这个Series和DataFrame的用法一致,直接用+—就可以了
# 接下来可以使用dropna()来删除na所在的行或列

直接让两个DataFrame相加减,对于不对应的行列会产生NA值,如果想对NA值进行赋值,可以采用另一种方法。

df1.add(df2,fill_value=0)
# 相对应的加减乘除依次是:add/sub/mul/div

Q6:根据DataFrame的某一列进行排列

df.sort_index(by="a")
#表示按照列a排序。
# 根据多个列排序,可以传给by一个列表

Q7:对DataFrame的行或者列求和,最大值,最小值,均值

a=df.sum(axis=1)
# sum() mean() max() min() 

对dataframe来说,可以求所有行或者列的sum,也可以求特定行或者列的sum

这里NA会被自动排除,如果一行或者一列全部是NA的话,则为NA

如果想实现:有一个NA则全部为NA的情况,可以使用skipna=False参数实现

02

处理文件的常用命令

「1」合并文件

cat将两个文件合并,列数不变,行数增加
paste将两个文件合并,行数不变,列数增加

image

「2」os库的使用

os.path.join()

用来合并路径,多个参数:如果有'/'开头的参数,从最后一格‘/’开始连接

# -*- coding:utf-8 -*-
import os.path as op
path="/home/zy"
a=op.abspath(path)
#返回path在当前系统中的绝对路径
c=op.join('/aaaa','bbbb','/ccccc.txt','/sdasdasd')
c1=op.join('/bbbb','ccccc.txt','./sdasdasd.txt')
print(c)
print(c1)
#---------结果----------
#/sdasdasd
#/bbbb/ccccc.txt/./sdasdasd.txt

几个常用判断:

os.path.exist()
os.path.isfile()
os.path.isdir()

os.walk()

是可以得到向前路径path下所有的文件,包括所有的子文件里的内容。

返回的是一个三元组

for root,dir,file in os.walk(path):
#可以得到子文件夹里的内容
    for i in dir:
        print(os.path.join(root,dir))
#file相同的用法

os.listdir()

只得到当前path下的目录和文件,用法比较方便,目录和文件都在下面的i中,所以对于输出,可以用一个判断来筛选只输出文件或目录。

for i in os.listdir(path):
  for y in i:
      print(y)
#如果只想输出文件或者目录
#os.path.isdir()
#os.path.isfile()

「彩蛋」之前一直想写一个进度条,查到了tqdm这个python包,一直没理解精髓,最近再看是豁然开朗,原来很简单。

通常用在for循环上,在列表前面加上tqdm即可.

对于没有for循环列表的情况,可以依靠”站在上帝视角“解决问题。

可以通过构建函数或类,然后将参数输入成列表

# -*- coding:utf-8 -*-
import os
from tqdm import tqdm
import time
class mina:
    def __init__(self,a):
        b=a-10
if __name__=='__main__':
    b=list(range(10000000))
    for i in tqdm(b):
        mina(i)
image
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,284评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,115评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,614评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,671评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,699评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,562评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,309评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,223评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,668评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,859评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,981评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,705评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,310评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,904评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,023评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,146评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,933评论 2 355

推荐阅读更多精彩内容