初始化空的DataFrame
import pandas as pd
empty_df = pd.DataFrame(columns=['A','B','C','D'])
创建了四列,每一列的内容都是空的
展示数据规模
1、行数和列数
df.shape
2、按某一列名统计数据
df.groupby('column_name').count()
DataFrame数据拼接合并
pd.merge()
a=pd.DataFrame({'a':[1,2,3],'b':[2,3,4]})
b=pd.DataFrame({'a':[11,22,33],'c':[22,33,44]})
c=pd.merge(a,b)
c
a和b的同名列表被合并,但是都是空说明默认连接形式是内连接,即二者默认把相同列名作为查找的条件,若是查找不到相同的值返回空。
加入连接条件
c=pd.merge(a,b,how='outer',on='a')
c
pd.concat()
pd.concat(a,b)
# 横向拼接
pd.concat([a,b], axis=1)
# 纵向拼接
pd.concat([a,b], axis=0)
报错:
TypeError: first argument must be an iterable of pandas objects, you passed an object of type "DataFrame"
使用pandas.concat(a,b)进行合并的时候,需要是list的形式
pd.concat([a,b])
它把a,b两个表完全拼接在一起,默认拼接形式是并集,我们可以通过修改参数来修改拼接模式,以及拼接方向,也可以重述索引。
更新权重
d=pd.concat([a,b])
d.index=list(range(0,6))
d
赋值
通过赋值语句可以使得单列数据的拼接。
e=pd.Series(list('abc'))
a['c']=e
a
DataFrame.join()
a.join(b)
报错:
ValueError: columns overlap but no suffix specified: Index(['a', 'c'], dtype='object')
列表不能有重名
按行遍历 DataFrame
- iterrows(): 按行遍历,将DataFrame的每一行迭代为(index, Series)对,可以通过row[name]对元素进行访问。
- itertuples(): 按行遍历,将DataFrame的每一行迭代为元祖,可以通过row[name]对元素进行访问,比iterrows()效率高。
- iteritems():按列遍历,将DataFrame的每一列迭代为(列名, Series)对,可以通过row[index]对元素进行访问。
inp = [{'c1':10, 'c2':100}, {'c1':11, 'c2':110}, {'c1':12, 'c2':123}]
df = pd.DataFrame(inp)
df
1、按行 iterrows()
row[‘name’]
for index, row in df.iterrows():
print(index, row['c1'], row['c2'])
0 10 100
1 11 110
2 12 123
2、按行 itertuples()
getattr(row, ‘name’)
for row in df.itertuples():
print(getattr(row, 'c1'), getattr(row, 'c2'))
10 100
11 110
12 123
3、按列 iteritems()
row[index]
for index, row in df.iteritems():
print(index, row[0], row[1], row[2])
c1 10 11 12
c2 100 110 123
https://blog.youkuaiyun.com/sinat_29675423/article/details/87972498
DataFrame的索引
pandas提供了专门的用于索引DataFrame的方法,如果要是用标签,最好使用loc方法,如果使用下标,最好使用iloc方法: