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
'''

2786

被折叠的 条评论
为什么被折叠?



