【pandas】技巧用法汇总(数据的创建、保存、增加、删除、查找、修改)

  • 写在前头:本篇博客写作的目的是为了记录我学习过程中遇到的所有的关于pandas的使用方法,bug等,将本博客作一个pandas万金油博客,希冀遇到所有的问题,查这一篇博客就足够了(从目录入手,查看自己需要查阅到部分)。首先本文对pandas.DataFrame的所有增删查改操作进行了介绍。然后接下来会记录各种各样的pandas高级操作,工作中遇到的问题和解决办法。

Pandas模块的数据结构主要有两种:

  • 1.DataFrame
  • 2.Series

零、pandas print() 完整打印输出方法

import pandas as pd
#显示所有列
pd.set_option('display.max_columns', None)
#显示所有行
pd.set_option('display.max_rows', None)
#设置value的显示长度为100,默认为50
pd.set_option('max_colwidth',100)

一、pd.DataFrame()

1、DataFrame的创建与保存

(1)从excel、csv导入

  • 从excel导入
train = pandas.read_excel("./1.xls")
df = pandas.DataFrame(train)
  • 从csv导入
train = pandas.read_csv("./1.csv")
df = pandas.DataFrame(train)

(2) 手动创建

# coding=utf-8
import numpy as np
import pandas as pd

df = pd.DataFrame(np.arange(12, 24).reshape((3,4)), columns=["W","X","Y","Z"])
print(df)
'''
    W   X   Y   Z
0  12  13  14  15
1  16  17  18  19
2  20  21  22  23
'''

(3) 保存为excel、csv

  • 保存为excel
df.to_excel("./1.xls", columns=file_column)
  • 保存为csv
df.to_csv("./1.csv", columns=file_column)

2、DataFrame的增加

df
'''
    W   X   Y   Z
0  12  13  14  15
1  16  17  18  19
2  20  21  22  23
'''

(1) 在pandas.DataFrame中添加一行

import random
df.loc[3] = [random.randint(-1,1) for i in range(4)]
df

'''
    W   X   Y   Z
0  12  13  14  15
1  16  17  18  19
2  20  21  22  23
3  -1   0  -1  -1
'''

(2) 在pandas.DataFrame中添加多行

import random
df = pd.DataFrame(columns=('lib', 'qty1', 'qty2'))  # 生成空的pandas表
for i in range(5):  # 插入一行<span id="transmark" style="display:none;"></span>
    df.loc[i] = [random.randint(-1, 1) for n in range(3)]
print(df)

'''
  lib qty1 qty2
0   1    0    1
1   0    0    1
2   0    1   -1
3   1   -1    1
4   0    1   -1
'''

3、DataFrame的删除

df
'''
    W   X   Y   Z
0  12  13  14  15
1  16  17  18  19
2  20  21  22  23
'''

(1) 在pandas.DataFrame中删除一行或多行

df.drop([0,1])

'''
    W   X   Y   Z
2  20  21  22  23
'''

(2) 在pandas.DataFrame中删除一列或多列

  • 下面两种方法等价
df.drop(['W','Z'], axis=1)

'''
    X   Y
0  13  14
1  17  18
2  21  22
'''
df.drop(columns=['W', 'Z'])

'''
    X   Y
0  13  14
1  17  18
2  21  22
'''

4、DataFrame的查看

df
'''
    W   X   Y   Z
0  12  13  14  15
1  16  17  18  19
2  20  21  22  23
'''

(1) pd.head()

  • 用于查看dataframe的前几行,n默认为5
df.head(n=1)

'''
    W   X   Y   Z
0  12  13  14  15
'''

(2) 使用切片,多行提取

df[0:3]

'''
    W   X   Y   Z
0  12  13  14  15
1  16  17  18  19
'''

(3) 使用表达式取到某些条件的行

'''
    W   X   Y   Z
0  12  13  14  15
1  16  17  18  19
2  20  21  22  23
'''
df[df.Z>15]

'''
    W   X   Y   Z
1  16  17  18  19
2  20  21  22  23
'''

(4) 使用df.loc()进行行选取,使用索引名字

df.loc[1]

'''
W    16
X    17
Y    18
Z    19
Name: 1, dtype: int32
'''
df.loc[1:3]

'''
    W   X   Y   Z
1  16  17  18  19
2  20  21  22  23
'''

(5) 使用df.iloc()进行单行、单独元素、多行提取

'''
    W   X   Y   Z
0  12  13  14  15
1  16  17  18  19
2  20  21  22  23
'''
  • 使用df.iloc()进行单行、多行选取
df.iloc[1,]

'''
W    16
X    17
Y    18
Z    19
Name: 1, dtype: int32
'''
  • 使用df.iloc()进行单独元素提取
df.iloc[1,1]

'''
17
'''
  • 使用df.iloc()进行多行选取
df.iloc[1:3,]

'''
    W   X   Y   Z
1  16  17  18  19
2  20  21  22  23
'''

(6) 提取出DataFrame中的一列

df.to_dict()["W"]

'''
{0: 12, 1: 16, 2: 20}
'''

5、DataFrame的修改

df
'''
    W   X   Y   Z
0  12  13  14  15
1  16  17  18  19
2  20  21  22  23
'''

(1) 在pandas.DataFrame中修改一行

import random
df.loc[2] = [random.randint(-1,1) for i in range(4)]
df

'''
    W   X   Y   Z
0  12  13  14  15
1  16  17  18  19
2  -1   1  -1   0
'''

(2) 在pandas.DataFrame中修改多行

import random
df = pd.DataFrame(np.arange(12, 24).reshape((3,4)), columns=["W","X","Y","Z"])
for i in [1,2]:
    df.loc[i] = [random.randint(-1,1) for i in range(4)]
print(df)

'''
    W   X   Y   Z
0  12  13  14  15
1  -1  -1   0   1
2   0   1   0   0
'''

6、DataFrame获取excel的表头

  • DataFrame获取excel的表头,用以创建新的相同表头的表
# coding=utf-8
import numpy as np
import pandas as pd

df = pd.DataFrame(np.arange(12, 24).reshape((3,4)), columns=["W","X","Y","Z"])
print(df1)
'''
    W   X   Y   Z
0  12  13  14  15
1  16  17  18  19
2  20  21  22  23
'''
--------------------------------------------
# 获取表头
file_column = [x for x in df]
print(file_column)

'''
['W', 'X', 'Y', 'Z']
'''

7、DataFrame中将空字符串替换为0

  • 此处是为了解决有时候表格有空值,再处理数据等一些操作时,会带来一定的不便,因此,介绍了这一种将空值替换为任意字符的方法,此处以0举例。
  • 注意,他的操作对象只能是建好的表格,而不能是未赋值的表格。
df.fillna(0)

二、pd.Series()

  • Series 是一维数组,基于Numpy的ndarray 结构
Series([data, index, dtype, name, copy,])	
# One-dimensional ndarray with axis labels (including time series).

1、Series 创建

import pandas as pd 
import numpy as np

(1) pd.Series([list],index=[list])

  • pd.Series([list],index=[list]) 参数为list ,index为可选参数,若不填写则默认为index从0开始
obj = pd.Series([4, 7, -5, 3, 7, np.nan])
obj

输出结果为:

0    4.0
1    7.0
2   -5.0
3    3.0
4    7.0
5    NaN
dtype: float64
  • 指定index
obj = pd.Series([4, 7, -5, 3, 7, np.nan], [4,3,"a",1,0,"hello"])
obj

输出结果为:

4        4.0
3        7.0
a       -5.0
1        3.0
0        7.0
hello    NaN
dtype: float64

(2) pd.Series(np.arange())

pd.Series(np.arange())

arr = np.arange(6)
s = pd.Series(arr)
s

输出结果为:

0    0
1    1
2    2
3    3
4    4
5    5
dtype: int32

(3) pd.Series({dict})

pd.Series({dict})

d = {'a':10,'b':20,'c':30,'d':40,'e':50}
s = pd.Series(d)
s

输出结果为:

a    10
b    20
c    30
d    40
e    50
dtype: int64

(4) 可以通过DataFrame中某一行或者某一列创建序列

Reference

  1. 创建pd.Series的方法. pd.Series函数详解
  2. pandas基础之按行取数(DataFrame)
  3. Pandas 对DataFrame的缺失值NA值处理4种方法总结
  4. dataframe缺失值补零
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值