一、从csv文件中读取数据
import pandas as pd
df=pd.read_csv('e:/dianxin/a.csv')
rows=df[0:2] #读取指定的 0-1行
cols=df [ [ 'age' , ' name' ] ] #读取指定列名的列
cols.head() #读取指定列的前五行
#块的选取
df.ix[ 0:3, [ 'name' ] ] #同时读取指定的 [0-3] 行和 'name' 列,此时第4行可被取到
loc、iloc的区别:
df = pd.DataFrame(np.arange(0,60,2).reshape(10,3),columns=list('abc'))
print(df)
a b c
0 0 2 4
1 6 8 10
2 12 14 16
3 18 20 22
4 24 26 28
5 30 32 34
6 36 38 40
7 42 44 46
8 48 50 52
9 54 56 58
print(df.loc[0, 'a'])
print(df.loc[0:3, ['a', 'b']]) #取0,1,2,3行
print(df.loc[[1, 5], ['b', 'c']])
0
a b
0 0 2
1 6 8
2 12 14
3 18 20
b c
1 8 10
5 32 34
print(df.ix[0, 'a'])
print(df.ix[0:3, ['a', 'b']])
print(df.ix[[1, 5], ['b', 'c']])
同loc
print(df.iloc[1,1])
print(df.iloc[0:3, [0,1]]) #只取0,1,2行
print(df.iloc[[0, 3, 5], 0:2]) #只取0,1列
8
a b
0 0 2
1 6 8
2 12 14
a b
0 0 2
3 18 20
5 30 32
#创建新的列
df [ ' total-cost' ]=df [ 'age' ] * df [ 'cost' ]
df.head()
#根据条件过滤
df [ (df ['age'] >10) & (df ['cost'] < 70) ]
#以某个字段设置索引
df1=df.set_index('name')
df1=df1.sort_index()
#按姓名分组,计算cost的均值和总和,axis=1表示drop()函数去掉相应的列
df_mean=df.drop(['age','total_cost'],axis=1).groupby('name').mean().sort_values('cost',ascending=False)
print(df_mean) #表示按姓名进行分组,把同姓名的cost值求平均值,并按降序进行排列
df_sum=df.drop(['age','total_cost'],axis=1).groupby('name').mean().sort_values('cost',ascending=False)
print(df_sum)
df.info() #查看表的数据信息
df.describe() #查看表的描述性统计信息
#按名字分组,计算相同名字的cost均值
grouped=df['cost'].groupby(df['name'])
print(grouped.mean())
#将name作为索引,分别求所有列的均值
print(df.groupby('name').mean())
#group()的size()函数返回一个含有各分组大小的series
print(df.groupby('name').size())
#获取dataframe的行数和列数
a=pd.DataFrame([[1,2,3],[4,5,6]]) print(a) print('a的列数:',a.columns.size) print('a的行数;',a.iloc[:,[0]].size) print('a.ix[[0]]:\n',a.ix[[0]]) print('a.ix[[0]].values:',a.ix[[0]].values) print('a.ix[[0]].values[0]:',a.ix[[0]].values[0]) print('a.ix[[0]].values[0][0]:',a.ix[[0]].values[0][0])
结果:
0 1 2
0 1 2 3
1 4 5 6
a的列数: 3
a的行数; 2
a.ix[[0]]:
0 1 2
0 1 2 3
a.ix[[0]].values: [[1 2 3]]
a.ix[[0]].values[0]: [1 2 3]
a.ix[[0]].values[0][0]: 1
#直接获取dataframe某一列的类别数
print(train['amt_src1'].value_counts().size)
#获取某一列按另一列进行划分
print(train['device2'].groupby(train['device1']))