在python中利用pandas库学习数据结构第二天

1列操作

1.1loc函数查看

loc[行标签,列标签]

import pandas as pd
data=[[1,2,3],[4,5,6],[7,8,9]]
arr=pd.DataFrame(data,index=['a','b','c'],columns=['x','y','z'])
print(arr.loc[['b'],['y']])
'''输出为:
   y
b  5
'''

1.2iloc函数查看

iloc[行索引小标,列索引下标]

import pandas as pd
data=[[1,2,3],[4,5,6],[7,8,9]]
arr=pd.DataFrame(data,index=['a','b','c'],columns=['x','y','z'])
print(arr.iloc[[0],[2]])
'''输出为:
   z
a  3
'''

1.3concat函数添加

conncat(添加的数据,axis:指定连接的轴,0 或 'index' 表示按行连接,1 或 'columns' 表示按列连接。join:指定连接方式,'outer' 表示并集(默认),'inner' 表示交集。ignore_index:如果为 True,则忽略原始索引并生成新的索引。)

import pandas as pd
import numpy as np
data=[[1,2,3],[4,5,6],[7,8,9]]
arr=pd.DataFrame(data,index=['a','b','c'],columns=['x','y','z'])
data2=np.arange(9,21).reshape(4,-1)
arr2=pd.DataFrame(data2,index=['a','b','c','d'],columns=['x','y','z'])
arr3=pd.concat([arr,arr2],axis=1,join='inner')
print(arr3)
'''输出为:
   x  y  z   x   y   z
a  1  2  3   9  10  11
b  4  5  6  12  13  14
c  7  8  9  15  16  17
'''

join为inner时,会把不匹配的行或列删除。

1.4drop函数删除

drop(行标签或列标签,axis:指定删除的方向,axis=0 或 axis='index' 表示删除行,axis=1 或 axis='columns' 表示删除列。inplace:是否修改原数据)

import pandas as pd
data=[[1,2,3],[4,5,6],[7,8,9]]
arr=pd.DataFrame(data,index=['a','b','c'],columns=['x','y','z'])
arr.drop(['x'],axis=1,inplace=True)
print(arr)
'''输出为:
   y  z
a  2  3
b  5  6
c  8  9
'''

1.5常用的统计学操作

1.5.1count函数

count计算每行或每列不为空元素个数

count(axis:1为表示水平计数,0为垂直计数)

import pandas as pd
data=[[1,2,3],[4,5,6],[7,8,9],[7,8,9]]
arr=pd.DataFrame(data,index=['a','b','c','d'],columns=['x','y','z'])
number=arr.count(axis=1)
print(number)
'''输出为:
a    3
b    3
c    3
d    3
'''

1.5.2sum函数

计算行或列的总值

它的axis与count的axis属性相同:

import pandas as pd
data=[[1,2,3],[4,5,6],[7,8,9],[7,8,9]]
arr=pd.DataFrame(data,index=['a','b','c','d'],columns=['x','y','z'])
number=arr.sum(axis=1)
print(number)
'''输出为:
a     6
b    15
c    24
d    24
dtype: int64
'''

1.5.3mean函数

计算平均数

它的axis与count的axis属性相同:

import pandas as pd
data=[[1,2,3],[4,5,6],[7,8,9],[7,8,9]]
arr=pd.DataFrame(data,index=['a','b','c','d'],columns=['x','y','z'])
number=arr.mean(axis=1)
print(number)
'''输出为:
a    2.0
b    5.0
c    8.0
d    8.0
dtype: float64
'''

1.5.4median函数

求中位数

它的axis与count的axis属性相同:

import pandas as pd
data=[[1,2,3],[4,5,6],[7,8,9],[7,8,9]]
arr=pd.DataFrame(data,index=['a','b','c','d'],columns=['x','y','z'])
number=arr.median(axis=1)
print(number)
'''输出为:
a    2.0
b    5.0
c    8.0
d    8.0
dtype: float64
'''

1.5.5std函数

求标准差(此为样本方差)

它的axis与count的axis属性相同:

import pandas as pd
data=[[1,2,3],[4,5,6],[7,8,9],[7,8,9]]
arr=pd.DataFrame(data,index=['a','b','c','d'],columns=['x','y','z'])
number=arr.std(axis=1)
print(number)
'''输出为:
a    1.0
b    1.0
c    1.0
d    1.0
dtype: float64
'''

1.5.6min函数

求最小值

它的axis与count的axis属性相同:

import pandas as pd
data=[[1,2,3],[4,5,6],[7,8,9],[7,8,9]]
arr=pd.DataFrame(data,index=['a','b','c','d'],columns=['x','y','z'])
number=arr.min(axis=1)
print(number)
'''输出为:
a    1
b    4
c    7
d    7
dtype: int64
'''

1.5.7max函数

求最大值

它的axis与count的axis属性相同:

import pandas as pd
data=[[1,2,3],[4,5,6],[7,8,9],[7,8,9]]
arr=pd.DataFrame(data,index=['a','b','c','d'],columns=['x','y','z'])
number=arr.max(axis=1)
print(number)
'''输出为:
a    3
b    6
c    9
d    9
dtype: int64
'''

1.5.8abs函数

求绝对值

import pandas as pd
data=[[1,2,-3],[4,5,-6],[7,-8,9],[7,8,-9]]
arr=pd.DataFrame(data,index=['a','b','c','d'],columns=['x','y','z'])
number=arr.abs()
print(number)
'''输出为:
   x  y  z
a  1  2  3
b  4  5  6
c  7  8  9
d  7  8  9
'''

1.5.9prod函数

求所有数值的乘积

它的axis与count的axis属性相同:

import pandas as pd
data=[[1,2,3],[4,5,6],[7,8,9],[7,8,9]]
arr=pd.DataFrame(data,index=['a','b','c','d'],columns=['x','y','z'])
number=arr.prod(axis=1)
print(number)
'''输出为:
a      6
b    120
c    504
d    504
dtype: int64
'''

2数据遍历

2.1Series遍历

2.1.1item函数

items与字典的items函数一样的,返回索引与值

import pandas as pd
data=[1,2,3,4]
arr=pd.Series(data,index=['a','b','c','d'])
for index,value in arr.items():
    print(index,value,sep='\t')
'''输出为:
a	1
b	2
c	3
d	4
'''

2.1.2index函数

依次返回索引

import pandas as pd
data=[1,2,3,4]
arr=pd.Series(data,index=['a','b','c','d'])
for i in arr.index:
    print(i)
'''输出为:
a
b
c
d
'''

2.1.3values函数

依次返回值

import pandas as pd
data=[1,2,3,4]
arr=pd.Series(data,index=['a','b','c','d'])
for i in arr.values:
    print(i)
'''输出为:
1
2
3
4
'''

2.2DataFrame遍历

2.2.1iterrows函数

返回每行数据

import numpy as np
import pandas as pd
data=np.arange(1,10).reshape(3,-1)
arr=pd.DataFrame(data,index=['a','b','c'],columns=['x','y','z'])
for i in arr.iterrows():
    print(i)
'''输出为:
('a', x    1
y    2
z    3
Name: a, dtype: int64)
('b', x    4
y    5
z    6
Name: b, dtype: int64)
('c', x    7
y    8
z    9
Name: c, dtype: int64)
'''

2.2.2itertuple函数

import numpy as np
import pandas as pd
data=np.arange(1,10).reshape(3,-1)
arr=pd.DataFrame(data,index=['a','b','c'],columns=['x','y','z'])
for i in arr.itertuples(index=False,name=None):
    print(i)
'''输出为:
(1, 2, 3)
(4, 5, 6)
(7, 8, 9)
'''

index:是否显示索引,name=None,不显示名称

2.2.3items函数

import pandas as pd
data=np.arange(1,10).reshape(3,-1)
arr=pd.DataFrame(data,index=['a','b','c'],columns=['x','y','z'])
for index,value in arr.items():
    print(index,value,sep='\t')
    print()
'''输出为:
x	a    1
b    4
c    7
Name: x, dtype: int64

y	a    2
b    5
c    8
Name: y, dtype: int64

z	a    3
b    6
c    9
Name: z, dtype: int64
'''

3改变数据结构

3.1修改索引

3.1.1修改索引

3.1.1.1rename函数

rename(index:字典,对应行索引修改,coumluns:字典对用列索引修改,inplace:是否修改原数据)

import numpy as np
import pandas as pd
data=np.arange(1,10).reshape(3,-1)
arr=pd.DataFrame(data,index=['a','b','c'],columns=['x','y','z'])
print(arr)
print('=====')
arr.rename(index={'a':'x','b':'y','c':'z'},columns={'x':'s'},inplace=True)
print(arr)
'''输出为:
   x  y  z
a  1  2  3
b  4  5  6
c  7  8  9
=====
   s  y  z
x  1  2  3
y  4  5  6
z  7  8  9
'''
3.1.1.2reindex函数与reindex_like函数

reindex中的属性:

labels:类型:数组或列表,默认为 None。描述:新的索引标签。

index:类型:数组或列表,默认为 None。描述:新的行索引标签。

columns:类型:数组或列表,默认为 None。描述:新的列索引标签。

axis:类型:整数或字符串,默认为 None。描述:指定重新索引的轴。0 或 'index' 表示行,1 或 'columns' 表示列。

method:类型:字符串,默认为 None。描述:用于填充缺失值的方法。可选值包括 'ffill'(前向填充)、'bfill'(后向填充)等。

fill_value:类型:标量,默认为 np.nan。描述:用于填充缺失值的值。

import numpy as np
import pandas as pd
data=np.arange(1,10).reshape(3,-1)
arr=pd.DataFrame(data,index=['a','b','c'],columns=['x','y','z'])
print(arr)
print('=====')
arr1=arr.reindex(['x','y','h'],axis=1,method=None,fill_value=0)
print(arr1)
arr2=arr.reindex(['x','y','h'],axis=1)
print("====")
print(arr2)
'''输出为:
   x  y  z
a  1  2  3
b  4  5  6
c  7  8  9
=====
   x  y  h
a  1  2  0
b  4  5  0
c  7  8  0
====
   x  y   h
a  1  2 NaN
b  4  5 NaN
c  7  8 NaN
'''

rindex_like与full_like相似:

import numpy as np
import pandas as pd
data=np.arange(1,10).reshape(3,-1)
arr=pd.DataFrame(data,index=['a','b','c'],columns=['x','y','z'])
data2=np.arange(1,17).reshape(4,-1)
arr2=pd.DataFrame(data2,index=['a','b','c','d'],columns=['x','y','z','j'])
arr3=arr.reindex_like(arr2)
print(arr3)
'''输出为:
     x    y    z   j
a  1.0  2.0  3.0 NaN
b  4.0  5.0  6.0 NaN
c  7.0  8.0  9.0 NaN
d  NaN  NaN  NaN NaN
'''

3.2去重drop_duplicates函数

import numpy as np
import pandas as pd
data=np.array([[1,2,3],[1,2,3],[4,5,6]])
arr=pd.DataFrame(data,index=['a','b','c'],columns=['x','y','z'])
arr1=arr.drop_duplicates(['x'],keep='last')
print(arr1)
'''输出为:
   x  y  z
b  1  2  3
c  4  5  6
'''

只能按列删除行

keep:指定如何处理重复项。可以是:

'first':保留第一个出现的重复项(默认值)。

'last':保留最后一个出现的重复项。

False:删除所有重复项。

3.3排序

3.3.1sort_index函数,索引排序

axis:为1时列索引排序,为0时行索引排序

ascending:布尔值或布尔值列表,指定是升序排序(True)还是降序排序(False)。可以为每个列指定不同的排序方向。

import numpy as np
import pandas as pd
data=np.array([[1,2,3],[1,2,3],[4,5,6]])
arr=pd.DataFrame(data,index=['a','c','b'],columns=['x','z','y'])
print(arr)
print("=====")
arr1=arr.sort_index(axis=1)
print(arr1)
'''输出为:
   x  z  y
a  1  2  3
c  1  2  3
b  4  5  6
=====
   x  y  z
a  1  3  2
c  1  3  2
b  4  6  5
'''

3.3.2sort_values函数,元素值排序

它的属性和sort_index差不多:

import numpy as np
import pandas as pd
data=np.array([[1,2,3],[1,2,3],[4,5,6]])
arr=pd.DataFrame(data,index=['a','c','b'],columns=['x','z','y'])
print(arr)
print("=====")
arr1=arr.sort_values(by=['a'],axis=1,ascending=False)
print(arr1)
'''输出为:
   x  z  y
a  1  2  3
c  1  2  3
b  4  5  6
=====
   y  z  x
a  3  2  1
c  3  2  1
b  6  5  4
'''

3.4分组

3.4.1groupby函数

import pandas as pd
data={"A":[1,2,1,2,1,2],
      "B":[3,4,3,4,3,4],
      "C":[5,6,5,6,5,6]}
arr=pd.DataFrame(data,index=["x","y","z","h","j","k"])
arr1=arr.groupby(['A'])
for name,group in arr1:
    print(name)
    print(group)
'''输出为:
(1,)
   A  B  C
x  1  3  5
z  1  3  5
j  1  3  5
(2,)
   A  B  C
y  2  4  6
h  2  4  6
k  2  4  6
'''

分组后计算每组的平均数,并加入原数组

利用transform标签:

import pandas as pd
data={"A":[1,2,1,2,1,2],
      "B":[3,4,3,4,3,4],
      "C":[5,6,5,6,5,6]}
arr=pd.DataFrame(data,index=["x","y","z","h","j","k"])
arr1=arr.groupby(['A'])['B']
neam=arr1.transform('mean')
arr['C-normal']=neam
print(arr)
'''输出为:
   A  B  C  C-normal
x  1  3  5       3.0
y  2  4  6       4.0
z  1  3  5       3.0
h  2  4  6       4.0
j  1  3  5       3.0
k  2  4  6       4.0
'''

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值