《Python数据分析实战》4 pandas: Series DataFrame
- 初始化Series
srs = pd.Series([1,2,3,4])
srs = pd.Series([1,2,3,4], index=['a','b','c','d'])
srs1 = pd.Series(srs2)
- 布尔Series
srs>1:值是否大于1
srs.isin([2,3,4]):值是否在列表内
srs.isnull():值是否为np.nan
- Series运算
srs/2:元素商
srs1+srs2:元素和,如果有index则按index对齐运算,非对齐元素为np.nan
- Series排序
srs.sort_values()
- Series遍历
for index, val in srs.items():
index, val
- Serise合并
pd.concat([srs1, srs2], axis=1)
- 值个数计算
pd.value_counts(srs)
- 初始化DataFrame
dat = pd.DataFrame({'a':[1,2,3],'b':[2,3,4]})
dat = pd.DataFrame({'a':[1,2,3],'b':[2,3,4]}, index=['one','two','three'])
dat = pd.DataFrame(np.arange(6).reshape((3,2)), index=['one','two','three'], columns=['a','b'])
dat = pd.DataFrame({'a':{'1':1,'2':2},'b':{'1':1,'2':2}})
- DataFrame内置函数
dat.columns:列名
dat.index:行名
dat.values:所有元素
dat.one:获取列
dat['one']:获取列
dat[['one','two']]:获取多列
dat.iloc[2]:获取行
dat.iloc[[2,4]]:获取多行
dat[2:4]:获取连续多行
dat['one'][2]:获取元素
dat.at['rone','cone']:获取元素
dat.iat[1,2]:获取元素
dat.loc[0:2, ['one','two']]:获取多个元素,当行索引为字符串则不可用
dat.loc[['rone','rtwo'], ['cone','ctwo']]:获取多个元素
dat.T:转置
- 布尔DataFrame
dat>1:值是否大于1
dat.isin([1,2,3]):值是否在列表内
dat.isnull():值是否为np.nan
- 修改DataFrame
dat[0,2]=1:修改元素
del dat['two']:删除列
dat.drop(['two'], axis=0):删除行
dat.drop(['two'], axis=1):删除列
dat.reindex(index=['rone','rtwo'],columns=['one','three','four']):增加删除列
dat[["two", "one"]]:修改列顺序
- DataFrame遍历
for index in dat.index: 按行遍历
dat.loc[index]
for column in dat.columns: 按列遍历
dat[column]
- DataFrame运算
dat/2:元素商
dat1+dat2:元素和,按index对齐运算,非对齐元素为np.nan
- DataFrame行列操作
dat.apply((lambda x: x.max() - x.min())):按列处理
def f(x):
if x['3']%3 == 0:
return pd.Series([x['2'],x['3']])
return pd.Series([x['0'],x['1']])
dat.apply(f,axis=1):按行处理
- DataFrame排序
dat.sort_values(by=['a'],axis=1,ascending=False)
dat.sort_values(by=['a','b'],axis=1,ascending=False)
参考文献:
https://blog.csdn.net/junbujianwpl/article/details/70473659
https://blog.csdn.net/wr339988/article/details/65446138
https://blog.csdn.net/a19990412/article/details/81945315