dataframe常用操作:取行列,切片,排序

 

import numpy as np
import pandas as pd
from pandas import *
from numpy import *

data=DataFrame(np.arange(16).reshape(4,4),index=list("ABCD"),columns=list("wxyz"))
print(data)
#    w   x   y   z
#A   0   1   2   3
#B   4   5   6   7
#C   8   9  10  11
#D  12  13  14  15

#取前两行数据
print(data[0:2])
print(type(data[0:2]))
#   w  x  y  z
#A  0  1  2  3
#B  4  5  6  7
#<class 'pandas.core.frame.DataFrame'>

#取行数据iloc,loc;取列数据
print(data.loc["A"])
print(data.iloc[0])
#w    0
#x    1
#y    2
#z    3
#Name: A, dtype: int32
#w    0
#x    1
#y    2
#z    3
#Name: A, dtype: int32

print(data["w"])
print(data.loc[:,"w"])
#A     0
#B     4
#C     8
#D    12
#Name: w, dtype: int32
#A     0
#B     4
#C     8
#D    12
#Name: w, dtype: int32


#获取dataframe行列数
print(len(data))
print(data.columns.size)
#4
#4

#获取行列名
print(data.columns)
print(data.index)
#Index(['w', 'x', 'y', 'z'], dtype='object')
#Index(['A', 'B', 'C', 'D'], dtype='object')


#数据切片
print(data.loc[:,["x","z"]])
print(data.loc[["A","B"],"x":"z"])#行列标签前后都闭合
#    x   z
#A   1   3
#B   5   7
#C   9  11
#D  13  15
#   x  y  z
#A  1  2  3
#B  5  6  7

print(data.iloc[1:3,1:3])
print(data.iloc[[0,2],[0,2]])
#   x   y
#B  5   6
#C  9  10
#   w   y
#A  0   2
#C  8  10

#特殊条件选取行列
print(data[data>2])
#      w     x     y   z
#A   NaN   NaN   NaN   3
#B   4.0   5.0   6.0   7
#C   8.0   9.0  10.0  11
#D  12.0  13.0  14.0  15
print(data[data.w>5])
#    w   x   y   z
#C   8   9  10  11
#D  12  13  14  15
print(data[data.w==data.w.max()])
#    w   x   y   z
#D  12  13  14  15
print(data[data.w.isin([4,8])])
#   w  x   y   z
#B  4  5   6   7
#C  8  9  10  11

#对默认每一列数据求平均值
print(data.mean())
print(data["x"].value_counts())
#w    6.0
#x    7.0
#y    8.0
#z    9.0
#dtype: float64
#13    1
#5     1
#9     1
#1     1
#Name: x, dtype: int64
print(data.describe())
#               w          x          y          z
#count   4.000000   4.000000   4.000000   4.000000
#mean    6.000000   7.000000   8.000000   9.000000
#std     5.163978   5.163978   5.163978   5.163978
#min     0.000000   1.000000   2.000000   3.000000
#25%     3.000000   4.000000   5.000000   6.000000
#50%     6.000000   7.000000   8.000000   9.000000
#75%     9.000000  10.000000  11.000000  12.000000
#max    12.000000  13.000000  14.000000  15.000000


#给dataframe重新排序
data.sort_values(by="w",ascending=False,inplace=True)
print(data)
#    w   x   y   z
#D  12  13  14  15
#C   8   9  10  11
#B   4   5   6   7
#A   0   1   2   3
data.sort_values(by="D",axis=1,ascending=False,inplace=True)
print(data)
#    z   y   x   w
#D  15  14  13  12
#C  11  10   9   8
#B   7   6   5   4
#A   3   2   1   0
new_index=list("ABCD")
print(data.reindex(new_index))
#    z   y   x   w
#A   3   2   1   0
#B   7   6   5   4
#C  11  10   9   8
#D  15  14  13  12

参考:https://www.jb51.net/article/141725.htm

以上,记录本人学习过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值