总览:
1. 数据的读取与写入
2. 基本数据结构
3. 常用的基本函数及操作
4. 排序
细节:
1. 数据的读取与写入
# 读取为df
df = pd.read_csv('data/table.csv')
df_txt = pd.read_table('data/table.txt') #可设置sep分隔符参数
df_excel = pd.read_excel('data/table.xlsx')
# 写出
df.to_csv('data/new_table.csv')
df.to_excel('data/new_table2.xlsx', sheet_name='Sheet1')
2. 数据结构
# Series:
# 创建一个Series
s = pd.Series(np.random.randn(5),index=['a','b','c','d','e'],name='这是一个Series',dtype='float64')
# 访问series的属性
s.values
s.name
s.index
s.dtype
# 取出一个元素
s['a']
# 调用Series的一个方法
s.mean()
# DataFrame
# 创建一个df
df = pd.DataFrame({'col1':list('abcde'),'col2':range(5,10),'col3':[1.3,2.5,3.6,4.6,5.8]}, index=list('一二三四五'))
# 取出一列为Series
df['col1']
# 修改行列名字
df.rename(index={'一':'one'},columns={'col1':'new_col1'})
# 调用属性
df.index
df.columns
df.values
df.shape
# 调用方法
df.mean()
# 列的删除
df.drop(index='五',columns='col1') #设置inplace=True后会直接在原DataFrame中改动
del df['col1']
df.pop('col1') # pop方法直接在原来的DataFrame上操作,且返回被删除的列,与python中的pop函数类似
# 列的添加
df1['B']=list('abc')
df1.assign(C=pd.Series(list('def'))) # assign方法不会对原DataFrame做修改
# 列的选择
df.select_dtypes(include=['number']).head()
df.select_dtypes(include=['float']).head()
# Series转换成df
s.to_frame()
# df转置
s.to_frame().T
3. 常用函数
# 数据探索阶段的一些常用函数
df.head()
df.head(3)
df.tail()
df['Physics'].nunique()
df['Physics'].unique()
df['Physics'].count()
df['Physics'].value_counts()
df.info()
df.describe()
df.describe(percentiles=[.05, .25, .75, .95])
df['Physics'].describe() # 非数值型的列一样可以使用这个函数
df['Math'].idxmax()
df['Math'].idxmin()
df['Math'].nlargest(3)
df['Math'].nsmallest(3)
df['Math'].clip(33,80).head() # 对这一列进行区间选择
df['Math'].mad() # mad()求的是某一列上的数值与平均值之间差值的绝对值的平均值,也就是平均绝对距离差 mean average distance
df['Address'].replace(['street_1','street_2'],['one','two']).head() # 对特定的值进行替换
df.replace({'Address':{'street_1':'one','street_2':'two'}}).head()
df['Math'].apply(lambda x:str(x)+'!').head() #可以使用lambda表达式,也可以使用函数
df.apply(lambda x:x.apply(lambda x:str(x)+'!')).head() # 默认axis=0下可以迭代每一个列操作
4. 排序
# 排序的基本操作:
# 索引排序
df.set_index('Math').head()
df.set_index('Math').sort_index().head()
# 值排序
df.sort_values(by='Class').head()
df.sort_values(by=['Address','Height']).head()
Ref: https://github.com/yeayee/joyful-pandas 很棒的pandas教程,强烈推荐大家star这个项目,作者读过很多Pandas的英文原著。前期主要是依据这个教程做一个cheat sheet, 后续会在此基础上添加更多其他书籍以及教程里面的常用函数以及代码技巧。