看各种kaggle的代码时,发现pd.DataFrame是常用的数据结构,要想快速浏览、熟练修改各种kaggle代码,首先入门的应该是pd.DataFrame这个结构,下面记录pd.DataFrame常用的几种函数。
1、创建DataFrame
import pandas as pd
import numpy as np
#数据,行名,列名
df1 = pd.DataFrame(np.random.randn(3, 3), index=list('abc'), columns=list('ABC'))
#也可以用字典创建
dic1 = {
'name': ['张三', '李四', '王二', '小七'],
'age': [37, 70, 35, 10],
'gender': ['男', '男', '男', '女']
}
df = pd.DataFrame(dic1)
#输出结果
name age gender
0 张三 37 男
1 李四 70 男
2 王二 35 男
3 小七 10 女
2、DataFrame属性
2.1、查看属性
import pandas as pd
print(df.dtypes)
#输出结果:
name object
age int64
gender object
dtype: object
2.2、查看DataFrame头和尾,默认是5行
print(df.head(2))
print(df.tail(2))
#输出结果:
name age gender
0 张三 37 男
1 李四 70 男
name age gender
2 王二 35 男
3 小七 10 女
2.3 查看行名与列名
print(df.index)
print(df.columns)
#输出结果:
RangeIndex(start=0, stop=4, step=1)
Index(['name', 'age', 'gender'], dtype='object')
2.4 df.values 查看数据值,返回ndarray类型的对象
print(df.values)
print (type(df.values))
<class 'numpy.ndarray'>
[['张三' 37 '男']
['李四' 70 '男']
['王二' 35 '男']
['小七' 10 '女']]
2.5 df.empty判断DataFrame是否为空
df_empty = pd.DataFrame({'A' : []})
print(df_empty)
#输出结果:
Empty DataFrame
Columns: [A]
Index: []
print(df_empty.empty)
#输出结果:
True
3、DataFrame 下标、索引
3.1 df.at
访问行/列标签对的单个值,如果label不存在,返回错误
dic1 = {
'name': ['张三', '李四', '王二', '小七'],
'age': [37, 70, 35, 10],
'gender': ['男', '男', '男', '女']
}
df = pd.DataFrame(dic1)
print(df)
print(df.at[2, 'gender'])
#输出结果:
name age gender
0 张三 37 男
1 李四 70 男
2 王二 35 男
3 小七 10 女
男
3.2 df.loc 行操作
将上面的DataFrame的倒置一下,下面将列索引换成[4,5,6,7]是为了说明,loc中的值都是索引’label’值。
dic1 = {
'name': ['张三', '李四', '王二', '小七'],
'age': [37, 70, 35, 10],
'gender': ['男', '男', '男', '女']
}
df = pd.DataFrame(dic1)
df2 = pd.DataFrame(df.values.T, index=df.columns, columns=[4, 5, 6, 7])
print(df2)
3.2.1 Single label. Note this returns the row as a Series.
print(df2.loc['age'])
#结果:
4 37
5 70
6 35
7 10
Name: age, dtype: object
3.2.2 List of labels. Note using [[]] returns a DataFrame
print(df2.loc[['age', 'gender']])
4 5 6 7
age 37 70 35 10
gender 男 男 男 女
3.2.3 Single label for row and column
print(df2.loc['age', 7])
10
3.2.4 Slice with labels for row and single label for column.
print(df2.loc['name':'gender', 7])
name 小七
age 10
gender 女
Name: 7, dtype: object
3.2.5 Boolean list with the same length as the row axis
print(df2.loc[[True, False, True]])
4 5 6 7
name 张三 李四 王二 小七
gender 男 男 男 女
3.2.6 Set value for an entire row
df2.loc['age'] = 100
print (df2)
4 5 6 7
name 张三 李四 王二 小七
age 100 100 100 100
gender 男 男 男 女
3.3 df[] 列操作
print (df2[7])
name 小七
age 10
gender 女
Name: 7, dtype: object