Pandas入门学习(2)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_1290259791/article/details/83143867

Pandas 基本功能

主要介绍SeriesDataFrame对象,在实时数据处理中非常重要。

1、Series 基本属性

属性或方法 描述
axes 返回行轴标签列表
dtype 返回对象的数据类型(dtype)
empty 如果系列为空,返回 True
ndim 返回底层数据的维数。默认:1
size 返回基础数据中的元素数。
values 将系列作为 ndarray 返回。
head() 返回前 n 行。
tail() 返回后 n 行。

axes 示例

返回Series的标签列表

import pandas as pd
import numpy as np
s = pd.Series(np.random.randn(5))
print(s.axes)
[RangeIndex(start=0, stop=5, step=1)]

empty 示例

返回布尔值,表示对象是否为空
返回 True 表示对象为空

import pandas as pd
import numpy as np
s = pd.Series(np.random.randn(5))
print(s.empty)
False

ndim 示例

返回对象的维数

import pandas as pd
import numpy as np
s = pd.Series(np.random.randn(5))
n = pd.DataFrame(np.random.randn(6).reshape((2,3)))
print(s.ndim)
print(n.ndim)
1
2

size 示例

返回系列的大小(长度)

import pandas as pd
import numpy as np
s = pd.Series(np.random.randn(5))
print(s.size)
5

values 示例

以列表形式返回系列中的实际数据值

import pandas as pd
import numpy as np
s = pd.Series(np.random.randn(5))
print(s.values)
[ 0.90074849 -0.01737094 -0.61616918 -0.05302233 -0.02019216]

head() 和 tail() 方法示例

head() 返回前 n 行。
默认:显示前5行,可以自定义这个数字。

tail() 返回前 n 行。
默认:显示后5行,可以自定义这个数字。

2、DataFrame 基本属性

属性或方法 描述
T 转置行和列
axes 返回一个列,行轴标签和列轴标签作为唯一的成员。
dtypes 返回对象中的数据类型
empty 如果为空返回 True
ndim 返回轴/数组维度大小
shape 返回 DataFrame 的维度元组
size 返回元素数目
values 返回 Numpy 表示
head() 返回开头 n 行
tail() 返回最后 n 行

T(转置)示例

将行和列进行交换位置

import pandas as pd
import numpy as np
data = {'Name':pd.Series(['Hubo','Xiaoli','Vim','KaKa']),
		'Age':pd.Series([21,22,23,10]),
		'Grade':pd.Series([4.5,4.1,3.3,2.0])}
df = pd.DataFrame(data)
print(df)
print(df.T)
     Name  Age  Grade
0    Hubo   21    4.5
1  Xiaoli   22    4.1
2     Vim   23    3.3
3    KaKa   10    2.0
          0       1    2     3
Name   Hubo  Xiaoli  Vim  KaKa
Age      21      22   23    10
Grade   4.5     4.1  3.3     2

axes 示例

返回行轴标签和列标签列表

import pandas as pd
import numpy as np
data = {'Name':pd.Series(['Hubo','Xiaoli','Vim','KaKa']),
		'Age':pd.Series([21,22,23,10]),
		'Grade':pd.Series([4.5,4.1,3.3,2.0])}
df = pd.DataFrame(data)
print(df.axes)
[RangeIndex(start=0, stop=4, step=1), Index(['Name', 'Age', 'Grade'], dtype='object')]

dtype 示例

返回每列的数据类型

import pandas as pd
import numpy as np
data = {'Name':pd.Series(['Hubo','Xiaoli','Vim','KaKa']),
		'Age':pd.Series([21,22,23,10]),
		'Grade':pd.Series([4.5,4.1,3.3,2.0])}
df = pd.DataFrame(data)
print(df.dtypes)
Name      object
Age        int64
Grade    float64
dtype: object

empty 示例

返回布尔值,对象为空返回 True

import pandas as pd
import numpy as np
data = {'Name':pd.Series(['Hubo','Xiaoli','Vim','KaKa']),
		'Age':pd.Series([21,22,23,10]),
		'Grade':pd.Series([4.5,4.1,3.3,2.0])}
df = pd.DataFrame(data)
print(df.empty)
False

ndim 示例

返回对象的维数,DataFrame是一个 2D 对象

import pandas as pd
import numpy as np
data = {'Name':pd.Series(['Hubo','Xiaoli','Vim','KaKa']),
		'Age':pd.Series([21,22,23,10]),
		'Grade':pd.Series([4.5,4.1,3.3,2.0])}
df = pd.DataFrame(data)
print(df.ndim)
2

shape 示例

返回表示 DataFrame 的维度元组
元组(a,b),其中 a 是行数,b 表示列数

import pandas as pd
import numpy as np
data = {'Name':pd.Series(['Hubo','Xiaoli','Vim','KaKa']),
		'Age':pd.Series([21,22,23,10]),
		'Grade':pd.Series([4.5,4.1,3.3,2.0])}
df = pd.DataFrame(data)
print(df.shape)
(4,3)

size 示例

返回 DataFrame 中元素数

import pandas as pd
import numpy as np
data = {'Name':pd.Series(['Hubo','Xiaoli','Vim','KaKa']),
		'Age':pd.Series([21,22,23,10]),
		'Grade':pd.Series([4.5,4.1,3.3,2.0])}
df = pd.DataFrame(data)
print(df.size)
12

values 示例

DataFrame 中的实际数据作为 ndarray 返回。

import pandas as pd
import numpy as np
data = {'Name':pd.Series(['Hubo','Xiaoli','Vim','KaKa']),
		'Age':pd.Series([21,22,23,10]),
		'Grade':pd.Series([4.5,4.1,3.3,2.0])}
df = pd.DataFrame(data)
print(df.values)
[['Hubo' 21 4.5]
 ['Xiaoli' 22 4.1]
 ['Vim' 23 3.3]
 ['KaKa' 10 2.0]]

head() 和 tail() 方法示例

head() 返回前 n 行。
默认:显示前5行,可以自定义这个数字。

tail() 返回前 n 行。
默认:显示后5行,可以自定义这个数字。

3、DataFrame 描述统计

Pandas 中描述统计信息的函数

函数 描述
count() 非空观测数量
sum() 所有值之和
mean() 所有值的平均值
median() 所有值的中位数
mode() 值的模值
std() 值的标准偏差
min() 所有值中的最小值
max() 所有值中的最大值
abs() 绝对值
prod() 数组元素的乘积
cumsum() 累计总和
cumprod() 累计乘积
describe() 统计上面所有信息
  • 注意:sum(),cumsum()函数能数字和字符一起工作。
  • 注意:abs()这样的函数就只能操作数字。

describe()示例

函数给出平均值、标准差等
默认:函数排除字符列,只列出数字列摘要
include():用于传递什么列,默认:数字值

  • object - 汇总字符串列
  • number - 汇总数字列
  • all - 将所有列汇总在一起(不要传递列表)
import pandas as pd
import numpy as np
data = {'Name':pd.Series(['Hubo','Xiaoli','Vim','KaKa']),
		'Age':pd.Series([21,22,23,10]),
		'Grade':pd.Series([4.5,4.1,3.3,2.0])}
df = pd.DataFrame(data)
print(df.describe(include=['object']))
print(df.describe(include='all'))
        Name
count      4
unique     4
top     Hubo
freq       1
        Name        Age     Grade
count      4   4.000000  4.000000
unique     4        NaN       NaN
top     Hubo        NaN       NaN
freq       1        NaN       NaN
mean     NaN  19.000000  3.475000
std      NaN   6.055301  1.102648
min      NaN  10.000000  2.000000
25%      NaN  18.250000  2.975000
50%      NaN  21.500000  3.700000
75%      NaN  22.250000  4.200000
max      NaN  23.000000  4.500000

4、Pandas函数应用

将函数应用于 Pandas 对象,常用三种方法,行或列或元素上进行操作。

  • pipe():表格函数应用
  • apply():行或列函数应用
  • applymap():元素函数应用

表格函数应用

将函数和适当数量的参数作为管道参数来执行自定义操作。
对整个DataFrame执行操作。

import pandas as pd
import numpy as np
def adder(ele1,ele2):
   return ele1+ele2

df = pd.DataFrame(np.random.rand(5,3),columns=['A','B','C'])
print(df.pipe(adder,100))
            A           B           C
0  100.881561  100.254161  100.390598
1  100.834995  100.787453  100.237498
2  100.191932  100.169226  100.185465
3  100.600637  100.055993  100.343523
4  100.877651  100.473381  100.438437

行或列函数应用

使用apply()方法沿DataFramePanel的轴应用任意函数
默认:操作按列执行,将每列列为数组

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(5,3),columns=['A','B','C'])
print(df)
print(df.apply(np.mean))
print(df.apply(np.mean, axis=1))
df.apply(lambda x: x.max() - x.min())
print(df)
          A         B         C
0  0.437312  0.799019  0.842078
1  0.697479  0.117254  0.628487
2  0.816568  0.972410  0.760768
3  0.450923  0.031967  0.658762
4  0.641998  0.633653  0.748719
A    0.608856
B    0.510861
C    0.727763
dtype: float64
0    0.692803
1    0.481074
2    0.849916
3    0.380551
4    0.674790
dtype: float64
          A         B         C
0  0.437312  0.799019  0.842078
1  0.697479  0.117254  0.628487
2  0.816568  0.972410  0.760768
3  0.450923  0.031967  0.658762
4  0.641998  0.633653  0.748719

元素函数应用

在DataFrame上的方法applymap()和类似地在Series上的map()接受任何Python函数,并且返回单个值。

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(5,3),columns=['A','B','C'])
print(df)
print(df['A'].map(lambda x: x * 100))
print(df.applymap(lambda x: x * 100))
          A         B         C
0  0.191182  0.468353  0.569726
1  0.643632  0.903344  0.689815
2  0.226939  0.455236  0.054880
3  0.024711  0.063028  0.601296
4  0.502506  0.259828  0.903867
0    19.118187
1    64.363249
2    22.693934
3     2.471056
4    50.250610
Name: A, dtype: float64
           A          B          C
0  19.118187  46.835287  56.972615
1  64.363249  90.334413  68.981530
2  22.693934  45.523638   5.487973
3   2.471056   6.302777  60.129613
4  50.250610  25.982770  90.386709

**注意:**该操作和表格函数应用的实例作用类似。

5、Pandas 重建索引

重建索引会更改DataFrame的行标签和列标签
重新索引意味着符合数据以匹配特定轴上的一组给定的标签。

实现的操作

  • 重新排序现有数据以匹配一组新的标签
  • 在没有标签数据的标签位置插入缺失值NA标记

示例

import pandas as pd
import numpy as np

N = 10
df = pd.DataFrame({
	'A': pd.date_range('2016-11-11',periods=N),
	'C': np.linspace(0,num=N,stop=N-1),
	'X': np.random.rand(N),
	'W': np.random.choice(['Low','Mid','High'],N).tolist(),
	'D': np.random.normal(100,10,size=(N)).tolist(),
	})
df1 = df.reindex(index=[0,3,8], columns=['A','W','B'])
print(df)
print(df1)
           A    C         X     W           D
0 2016-11-11  0.0  0.362752   Low   88.484337
1 2016-11-12  1.0  0.370616   Low  105.494904
2 2016-11-13  2.0  0.230432  High  129.169419
3 2016-11-14  3.0  0.054996  High  104.978711
4 2016-11-15  4.0  0.374281  High   98.874150
5 2016-11-16  5.0  0.855535   Mid  101.220366
6 2016-11-17  6.0  0.578576   Mid   91.053585
7 2016-11-18  7.0  0.243621   Low   97.590969
8 2016-11-19  8.0  0.014339   Mid  124.042128
9 2016-11-20  9.0  0.238797   Mid  107.222124
           A     W   B
0 2016-11-11   Low NaN
3 2016-11-14  High NaN
8 2016-11-19   Mid NaN

重建索引与其他对象对齐

采取一个对象和重新索引,其轴被标记为与另一个对象相同。

import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.random.rand(5,3), columns=['A','B','C'])
df2 = pd.DataFrame(np.random.rand(2,3), columns=['A','B','C'])
df1 = df1.reindex_like(df2)
print(df1)
          A         B         C
0  0.625741  0.372294  0.146664
1  0.831084  0.350805  0.277556

重命名

rename()方法允许基于一些映射(字典或者系列)或任意函数来重新标记一个轴。

import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.random.rand(5,3), columns=['A','B','C'])
print(df1)
print(df1.rename(columns={'A':'a','B':'b'}))
          A         B         C
0  0.296367  0.849991  0.551506
1  0.750420  0.627995  0.501638
2  0.651334  0.538189  0.179588
3  0.320770  0.528002  0.263931
4  0.695984  0.025996  0.585251
          a         b         C
0  0.296367  0.849991  0.551506
1  0.750420  0.627995  0.501638
2  0.651334  0.538189  0.179588
3  0.320770  0.528002  0.263931
4  0.695984  0.025996  0.585251

猜你喜欢

转载自blog.csdn.net/qq_1290259791/article/details/83143867