一、Dataframe的三个参数
1、data数据,只输入数据参数,会默认添加行索引和列索引,值为0,1,2...n递增的方式。
调用DataFrame()方法,把二维列表转化为DataFrame对象
from pandas import DataFrame,Series
lists=[
['name','zhang','san'],
['age',40,9],
['weight',80,6]
]
df=DataFrame(data=lists)
print(df)
2、通过DataFrame构造函数中的参数index行索引和columns列索引传值,设定DataFrame的行、列索引。
df2=DataFrame(data=lists,index=['a','b','c'],columns=['变量','第一部分','第二部分'])
print(df2)
3、使用字典创建DataFrame,字典的键作为列索引,字典的值作为数据
from pandas import DataFrame,Series
dict={
'变量':['name','age','weight'],'第一部分': ['zhang',40,80],'第二部分':['san',9,6]
}
df3=DataFrame(data=dict,index=['a','b','c'])
df3
二、属性
1、判断一维和二维
df.ndim
#输出结果为2说明是二维,1说明是一维。
2、分析行数和列数
df.shape
#输出结果为:(行数,列数)
3、获取头部数据,没有参数,默认是5
df.head(数字)
4、获取尾部数据,没有参数,默认是5
df.tail(数字)
5、index.to_list()方法获取行索引列表
df.index.to_list()
#输出结果为:[index列表],如:['a', 'b', 'c']
6、columns.to_list()方法获取行索引列表
df.columns.to_list()
#输出结果为:[列索引列表],如:['变量', '第一部分', '第二部分']
三、取值
1、切片取值
(1)通过位置索引切片取一行(df[起始位置:结束位置])
df[0:1]
#输出结果为:
变量 第一部分 第二部分
a name zhang san
(2)通过位置索引切片取一行(df[起始位置:结束位置])
df[0:3]
#输出结果为:
变量 第一部分 第二部分
a name zhang san
b age 40 9
c weight 80 6
(3)获取某列(df[列索引])
df['第一部分']
#输出结果为:
a zhang
b 40
c 80
(4)获取多列(df[列索引列表])#注意为两个列表嵌套[[]]
df[['第一部分','第二部分']]
第一部分 第二部分
a zhang san
b 40 9
c 80 6
2、行、列标签索引取(loc方法,注意此方法特殊不是(),而是[])
(1)行、列标签索引取某一行某一列的值,也就相当于excel单元格的值
df.loc['a','变量']
#输出结果为:'name'
(2)行、列标签索引取某一行多列的值
df.loc['a',['变量','第二部分']]
#输出结果为:
变量 name
第二部分 san
(3)行、列标签索引取某一行所有列
df.loc['a',:]
(4)行、列标签索引取某一列所有行
df.loc[:,'变量']
(5)行、列标签索引取多行多列
df.loc[['a','c'],['变量','第二部分']]
(6)连续多行多列
df.loc['a':'c','变量':'第二部分']
3、通过行位置索引取值(iloc,注意此方法特殊不是(),而是[])
(1)获取单行
df.iloc[2]
(2)获取连续多行
df.iloc[0:2]
(3)获取不连续多行
df.iloc[[0,2],:]
(4)获取某行某列,相当于excel的单元格
df.iloc[0,2]
(5)获取某列所有行
df.iloc[:,[2]]
(6)获取多行多列
df.iloc[[0,2],[0,2]]
(7)获取连续多行多列
df.iloc[0:2,0:2]
四、遍历
1、按行遍历
(1)输出所有
for index,row_data in df.iterrows():
print(index,row_data)
#输出结果为:
a 变量 name
第一部分 zhang
第二部分 san
b 变量 age
第一部分 40
第二部分 9
c 变量 weight
第一部分 80
第二部分 6
(2)输出某列
for index,row_data in df.iterrows():
print(index,row_data['变量'])
(3)输出某行
for index,row_data in df.iterrows():
if index=='a':
print(index,row_data)
(4)选取部分赋值
for index,row_data in df.iterrows():
a,b=row_data[0:2]
print([a,b])
2、按列遍历
(1)输出所有
for columns,column_data in df.iteritems():
print(columns,column_data)
(2)输出某列
for columns,column_data in df.iteritems():
if columns==‘变量':
print(columns,column_data)
(3)输出某行
for columns,column_data in df.iteritems():
print(columns,column_data['a'])
(4)选取部分赋值
for columns,column_data in df.iteritems():
a,b=column_data[0:2]
print([a,b])