Pandas 28种常用方法使用总结( 二 )


# 访问name列中的子串df['name'].str[0:3]# 查找name列中包含字母'c'的行df[df[''].str.contains('c')]14. 数据透视表在数据分析中,有时需要统计汇总数据,并按照某些列进行分组统计汇总,Pandas中提供了数据透视表功能来实现上述需求 。例如:
pivot_df = df.pivot_table(values='score', index='gender', columnssubject', aggfunc=np.mean)在这个例子中,我们用pivot_table()方法将原始数据框df按照subject列和gender列进行分组,并求出每个分组的平均值,最后返回一个新的数据框pivot_df 。
15. 数据读写可以使用to_csv()方法数据框写入CSV文件,使用to_excel()方法将数据框写入Excel文件,使用read_sql()方法从数据库中读取数据,例如:
# 将数据框写入CSV文件df.to_csv('example.csv', index=False)# 将数据框写入Excel文件df.to_excel('example.xlsx', index=False)# 从数据库中读取数据import sqlite3conn = sqlite3.connect('example.db')df = pd.read_sql('select * from table1', conn)16. 编码和解码数据Pandas提供了多种方法来进行编码和解码数据,例如可以使用get_dummies()方法对某一列进行独热编码,使用factorize()方法将一个类别列编码为数值列,例如:
# 对gender列进行独热编df = pd.get_dummies(df, columns=['gender'])# 将gender列编码为数值列df['gender_code'] = pd.factorize(df['gender'])[0]17. 数据采样当数据量很大时,可以对数据进行采样进行快速处理 。Pandas中提供了sample()方法,可以从数据框中随机抽取指定数量的行或占总行数的百分比进行采样,例如:
# 从df中随机抽取10行进行采样sample_df = df.sample(n=10)# 从df中随机抽取10的行进行采样sample_df = df.sample(frac=0.1)18. 数据重塑在进行数据分析和处理时,有时需要对数据进行重塑,以便于进行后续的操作 。Pandas提供了一些方法来进行数据重塑,例如:

  • 将长格式数据重塑为宽格式数据:使用pivot()方法
  • 将宽格式数据重塑为长格式数据:使用melt()方法
例子:
# 将长格式数据重塑为宽格式数据df.pivot(index='date', columns='gender', values='score')# 将宽格式数据重塑为长格式数据df.melt(id_vars='date', value_vars=['math_score', 'biology_score', 'english_score'])19. 多级索引多级索引可以帮助我们处理多维数据,常见的多级索引实现方式为层次化索引 。Pandas中使用MultiIndex()方法创建多级索引,例如:
# 创建一个拥有两层索引的数据框df = pd.DataFrame(np.random.randint(10, size=(6,2)), index=[['A', 'A', 'B', 'B', 'C', 'C'], ['X', 'Y', 'X', 'Y', 'X', 'Y']], columns=['col_1', 'col_2'])# 将数据框按照第一层索引进行排序df = df.sort_index(level=0)20. 时间序列数据重采样Pandas中提供了一些方法用来对时间序列数据进行重采样,例如:
  • 将高频率数据降采样到低频率:使用resample()方法
  • 将低频率数据升采样到高频率:使用asfreq()方法
例子:
# 将按月的数据框重采样到按季度df.resample('Q').sum()# 将按年的数据框升采样到按半年df.asfreq('6M')同时,Pandas中也提供了各种方便的时间序列函数,例如计算均值、最大值、最小值、求和等,例如:
# 计算按周采样的均值df.resample('W').mean()# 计算按季度采样的最大值df.resample('Q').max()# 计算按年采样的最小值df.resample('Y').min()21. 用Apply函数实现对数据的自定义处理Pandas中,我们可以使用apply()方法将一个函数作用于数据框中所有的行或者列上,实现对数据的自定义处理 。例如,我们定义一个函数对每一行进行处理:
def process_data(row):# 处理数据的逻辑return processed_row# 对每一行进行df.apply(process_data, axis=1)在apply()方法中,axis参数可以设置为0表示对每一列进行处理,设置为1表示对每一行进行处理 。同时,我们还可以用map()方法和applymap()方法对数据框中每一个元素进行处理:
# 对某一列进行映射处理df['type'] = df['type'].map({'A': 0, 'B': 1, 'C': 2})# 对整个数据框进行元素级别的处理df.applymap(lambda x: x**2)22. 用groupby和apply函数实现分组自定义处理除了可以用groupby()方法按照某些列进行分组之外,apply()方法也可以和groupby()方法组合使用,实现对每个分组进行自定义处理 。例如:


推荐阅读