Python Pandas –操作
熊猫支持非常有用的操作,如下所示,
考虑下面的dataFrame,
import numpy as np
import pandas as pd
df = pd.DataFrame({
'col1': [1, 2, 3, 4],
'col2': [444, 555, 666, 444],
'col3': ['abc', 'def', 'ghi', 'xyz']
})
print(df.head())
'''
Output:
col1 col2 col3
0 1 444 abc
1 2 555 def
2 3 666 ghi
3 4 444 xyz
'''在数据框中查找唯一值
为了从列中找到唯一值,
#返回所有唯一值的numpy数组 print(df['col2'].unique() ) #输出:array([444,555,666]) #返回长度/唯一值的数量 #在一个numpy数组中 print(df['col2'].nunique()) #输出3 #如果我们想要唯一值表 #他们出现了多少次 print(df['col2'].value_counts() ) ''' Output: 444 2 555 1 666 1 Name: col2, dtype: int64 '''
从数据框中选择数据
看dataFrame,
使用条件选择,我们可以选择以下数据,
print(df['col1']>2) ''' Output: 0 False 1 False 2 True 3 True Name: col1, dtype: bool ''' print(df[(df['col1']>2)]) ''' Output: col1 col2 col3 2 3 666 ghi 3 4 444 xyz ''' print(df[df['col1']>2 & (df['col2']==44)]) ''' Output: col1 col2 col3 0 1 444 abc 1 2 555 def 2 3 666 ghi 3 4 444 xyz '''
应用方法
考虑一个简单的方法,
def times2(x): return x*2
我们已经知道我们可以抓住一列并从中调用一个内置函数。如下
print(df['col1'].sum()) #输出:10
现在,为了应用自定义功能(例如上面定义的时间(times2)),熊猫提供了执行此功能的选项,如下所述,
print(df['col2'].apply(times2)) ''' Output: 0 888 1 1110 2 1332 3 888 Name: col2, dtype: int64 '''
应用内置功能,
print(df['col3'].apply(len)) ''' Output: 0 3 1 3 2 3 3 3 Name: col3, dtype: int64 '''
当与lambda表达式结合使用时,apply方法将更强大。例如,
print(df['col2'].apply(lambda x: x*2)) ''' Output: 0 888 1 1110 2 1332 3 888 Name: col2, dtype: int64 '''
更多操作
#返回列名
print(df.columns)
#输出:索引(['col1','col2','col3'],dtype='object')
#由于这是一个rangeindex,因此它实际上会报告
#也可以开始,停止和步进值
print(df.index)
#输出:RangeIndex(开始=0,停止=4,步骤=1)
#按栏排序
print(df.sort_values('col2'))
'''
Output:
col1 col2 col3
0 1 444 abc
3 4 444 xyz
1 2 555 def
2 3 666 ghi
'''在以上结果中,请注意索引值不会更改,这是为了确保保留这些值。
一片空白
#一片空白
print(df.isnull())
'''
Output
col1 col2 col3
0 False False False
1 False False False
2 False False False
3 False False False
'''该isnull()会返回布尔值的数据框指示值是否是空或不是。在上面的代码中,由于我们的数据帧中有空值,因此我们得到的布尔值均为false。
降低NAN值
print(df.dropna()) ''' Output: col1 col2 col3 0 1 444 abc 1 2 555 def 2 3 666 ghi 3 4 444 xyz '''
用自定义值填充NAN值
df = pd.DataFrame({
'col1': [1, 2, 3, np.nan],
'col2': [np.nan, 555, 666, 444],
'col3': ['abc', 'def', 'ghi', 'xyz']
})
print(df)
'''
Output:
col1 col2 col3
0 1.0 NaN abc
1 2.0 555.0 def
2 3.0 666.0 ghi
3 NaN 444.0 xyz
'''
print(df.fillna('FILL'))
'''
Output:
col1 col2 col3
0 1 FILL abc
1 2 555 def
2 3 666 ghi
3 FILL 444 xyz
'''数据透视表的用法
AdvancedExcel用户将熟悉此方法。考虑一个新的dataFrame,
data = {
'A': ['foo', 'foo', 'foo', 'bar', 'bar', 'bar'],
'B': ['one', 'one', 'two', 'two', 'one', 'one'],
'C': ['x', 'y', 'x', 'y', 'x', 'y'],
'D': [1, 3, 2, 5, 4, 1]
}
df = pd.DataFrame(data)
print(df)
'''
Output:
A B C D
0 foo one x 1
1 foo one y 3
2 foo two x 2
3 bar two y 5
4 bar one x 4
5 bar one y 1
'''数据透视表创建一个多索引dataFrame。数据透视表采用三个主要参数,即值,索引和列。
print(df.pivot_table(values='D',index=['A', 'B'],columns=['C']))
'''
Output:
C x y
A B
bar one 4.0 1.0
two NaN 5.0
foo one 1.0 3.0
two 2.0 NaN
'''热门推荐
10 八一幼儿祝福语大全简短
11 公司乔迁食堂祝福语简短
12 婚礼结束聚餐祝福语简短
13 儿媳买车妈妈祝福语简短
14 毕业送礼老师祝福语简短
15 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短