数据处理是数据分析的重要组成部分,包括了各种任务,如清理、重组、合并、删除重复项、删除 Null 或 NaN 值等。Pandas 提供了大量的函数集来执行各种数据预处理任务。 Pandas 提供了两种类型的数据结构来处理数据,包括 Series 和 DataFrame。在这篇文章中,我整理了 18 个我在数据预处理任务中最常用的函数。 1)DataFrame.select_dtypes( ): 基于列 dtypes 返回 DataFrame 列的子集。 当你想只选择具有特定数据类型的列或具有特定数据类型的值时,例如:“object”,“int64”,np.number 等。 语法: DataFrame.select_dtypes(include = “reqd dtype”, exclude = “reqd dtype”) 例: #create DataFrame-----------------df = pd.DataFrame({'points': [25, 12, 15, 14, 19], 'Player': ['A','B' , 'C', 'D', 'E'], 'rebounds': [11, 8, 10, 6, 6]})#checks column datatype--------------------df.info()#selecting reqd datatype----------------------df.select_dtypes(include = 'int64') 输出: 2)DataFrame.drop_duplicates( ): 从 DataFrame 中删除重复的行,通常用于数据清理任务。在数据集中保留重复值会影响分析结果,因此数据清理对于避免误判非常重要。 语法: DataFrame.drop_duplicates(subset=None, keep='first', inplace=False, ignore_index=False) 参数:
例: #create DataFrame----------------------------df = pd.DataFrame({'points': [25, 12, 15, 14, 19,25,12,14], 'Player': ['A','B' , 'C', 'D', 'E','A','B','D'], 'rebounds': [11, 8, 10, 6, 6,11,8,6]})#drop duplicates-----------------------------------df = df.drop_duplicates(subset = ['Player'], keep ='first', ignore_index = False)df 输出: 3)DataFrame.str.lower( ): 将 Series/Index 中的字符串转换为小写。同样,对于大写,我们可以使用 DataFrame.str.upper() 。 语法: Series.str.lower() 例: #create DataFrame--------------------------------df = pd.DataFrame({'points': [25, 12, 15, 14, 19], 'Player': ['ADam','BOB' , 'COT', 'DerrICK','EtHan'], 'Team' : ['a','B','C','d','e'], 'rebounds': [11, 8, 10, 6, 6]})#converting column values of Player and Team into lowercase---------columns = df.select_dtypes(include = 'object')columns = list(columns.columns)for i in columns: df[i] = df[i].str.lower()df 输出: 4)Series.str.match() : Series.str.match() 函数用于确定给定序列对象中的数据是否与正则表达式匹配。 语法: Series.str.match(pat, case=True, flags=0, na=None) 参数:
例: city = pd.Series(['Kolkata','Delhi','Mumbai', 'Sikkim','Bangalore'])index = ['City_1','City_2','City_3','City_4','City_5']city.index = indexcity res = city.str.match(pat = '(Ranchi)|(Mumbai)')res res = city.str.match(pat = '([A-Z]a.)')res 5)pd.set_option( ): 例: data = {'Score' : [10, 15, 2, 31, 4, 51, 26, 17, 28, 29], 'Player' : ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']}df = pd.DataFrame(data)df pd.set_option('display.max_rows', 5)df pd.set_option( ) can also be used to format high number decimal points/scientific notation to normal notation. 例 : import numpy as npimport pandas as pddf = pd.DataFrame({ 'Name': ['a', 'b', 'c','d','e','f','g'], 'Value': np.random.rand(7)**3})df #formatting upto 2 decimal placespd.set_option('display.float_format', lambda x: '%0.2f' % x)df 输出: 6)df.iteritems( ): 用于迭代(列名、系列)。循环访问 DataFrame 列,返回一个元组,其中列名和内容是一个序列。该方法生成 DataFrame 的迭代器对象,允许我们迭代 DataFrame 的每一列。 例: #create DataFramedf = pd.DataFrame({'points': [25, 12, 15, 14, 19], 'Player': ['Adam','Bob','Cot','Derrick','Ethan'], 'Team' : ['a','B','C','d','e'], 'rebounds': [11, 8, 10, 6, 6]}) 迭代列 : for x, y in df.iteritems(): print(x) print(y) 输出: 7)df.iterrows( ): 有时我们需要在不使用循环的情况下迭代 DataFrame 的行和列,在这种情况 df.iterrows( ) 下非常有用。 以(索引、序列)对的形式迭代数据帧行。 例: #create DataFramedf = pd.DataFrame({'points': [25, 12, 15, 14, 19], 'Player': ['Adam','Bob','Cot','Derrick','Ethan'], 'Team' : ['a','B','C','d','e'], 'rebounds': [11, 8, 10, 6, 6]})#Iterating over DataFrame rowsfor i in df.iterrows(): print(i) 输出: 8)df.itertuples( ): 语法: DataFrame.itertuples(index=True, name='Pandas') Index = True 默认情况下为 name = 'Pandas’ 对于 DataFrame 中的每一行,要在 namedtuples 上迭代的对象,第一个字段可能是索引,后面的字段可能是列值。 例: #create DataFramedf = pd.DataFrame({'points': [25, 12, 15, 14, 19], 'Player': ['Adam','Bob','Cot','Derrick','Ethan'], 'Team' : ['a','B','C','d','e'], 'rebounds': [11, 8, 10, 6, 6]})for row in df.itertuples(): print(row) 输出: 9)df.reset_index( ): Pandas 中用于重置 DataFrame 的索引。reset_index() 将从 0 到数据长度的整数列表设置为索引。 例: df = pd.read_csv('customer_data.csv') 将列“Name”设置为索引: df.set_index(['Name'], inplace = True)df 重置索引: df.reset_index() pandas函数还有哪些?下期我们继续! |
|