导入csv数据
df =pd.read_csv("Counts.csv", header=0)
df.head()
切片
df['name'] # 选取一列,成一个series
df[['name']] # 选取一列,成为一个dataframe
df[['name','gender']] #选取多列,多列名字要放在list里
df[0:] #第0行及之后的行,相当于df的全部数据,注意冒号是必须的
df[:2] #第2行之前的数据(不含第2行)
df[0:1] #第0行
df[1:3] #第1行到第2行(不含第3行)
df[-1:] #最后一行
df[-3:-1] #倒数第3行到倒数第1行(不包含最后1行即倒数第1行,这里有点烦躁,因为从前数时从第0行开始,从后数就是-1行开始,毕竟没有-0)
loc
# df.loc[index, column_name],选取指定行和列的数据
df.loc[0,'name'] # 'Snow'
df.loc[0:2, ['name','age']] #选取第0行到第2行,name列和age列的数据, 注意这里的行选取是包含下标的。
df.loc[[2,3],['name','age']] #选取指定的第2行和第3行,name和age列的数据
df.loc[df['gender']=='M','name'] #选取gender列是M,name列的数据
df.loc[df['gender']=='M',['name','age']] #选取gender列是M,name和age列的数据
iloc
df.iloc[0,0] #第0行第0列的数据,'Snow'
df.iloc[1,2] #第1行第2列的数据,32
df.iloc[[1,3],0:2] #第1行和第3行,从第0列到第2列(不包含第2列)的数据
df.iloc[1:3,[1,2] #第1行到第3行(不包含第3行),第1列和第2列的数据
索引
# 选择单独的一列,返回 Serires,与 df.A 效果相当。
df['A']
# 位置切片
df[0:3]
# 索引切片
df['20130102':'20130104']
# 通过标签选择
df.loc[dates[0]]
# 对多个轴同时通过标签进行选择
df.loc[:,['A','B']]
# 获得某一个单元的数据
df.loc[dates[0],'A']
# 或者
df.at[dates[0],'A']# 速度更快的做法
# 通过位置进行选择
df.iloc[3]
# 切片
df.iloc[3:5,0:2]
# 列表选择
df.iloc[[1,2,4],[0,2]]
# 获得某一个单元的数据
df.iloc[1,1]
# 或者
df.iat[1,1]# 更快的做法
# 布尔索引
df[df.A > 0]
# 获得大于零的项的数值
df[df > 0]
# isin 过滤
df2[df2['E'].isin(['two','four'])]
赋值
# 新增一列,根据索引排列
s1 =pd.Series([1,2,3,4,5,6], index=pd.date_range('20130102', periods=6))
df['F']=s1
# 缺省项
# 在 pandas 中使用 np.nan 作为缺省项的值。
df1 =df.reindex(index=dates[0:4], columns=list(df.columns)+['E'])
df1.loc[dates[0]:dates[1],'E']=1
# 删除所有带有缺省项的行
df1.dropna(how='any')
# 填充缺省项
df1.fillna(value=5)
# 获得缺省项的布尔掩码
pd.isnull(df1)
观察
# 观察开头的数据
df.head()
# 观察末尾的数据
df.tail(3)
# 显示索引
df.index
# 显示列
df.columns
# 显示底层 numpy 结构
df.values
# DataFrame 的基本统计学属性预览
df.describe()
"""
A B C D
count 6.000000 6.000000 6.000000 6.000000 #数量
mean 0.073711 -0.431125 -0.687758 -0.233103 #平均值
std 0.843157 0.922818 0.779887 0.973118 #标准差
min -0.861849 -2.104569 -1.509059 -1.135632 #最小值
25% -0.611510 -0.600794 -1.368714 -1.076610 #正态分布 25%
50% 0.022070 -0.228039 -0.767252 -0.386188 #正态分布 50%
75% 0.658444 0.041933 -0.034326 0.461706 #正态分布 75%
max 1.212112 0.567020 0.276232 1.071804 #最大值
"""
# 转置
df.T
# 根据某一轴的索引进行排序
df.sort_index(axis=1, ascending=False)
# 根据某一列的数值进行排序
df.sort(columns='B')