pandas常用命令

基本操作

(1)读取、写入csv文件

pd.read_csv('file.csv')
df.to_csv('file.csv', sep=',', index=False) #逗号分隔,不带索引

(2)读取、写入excel文件

pd.read_excel('file.xlsx')
df.to_excel('file.xlsx', sheet_name='Sheet1', index=False) #指定Sheet名,不带索引

(3)读取、写入文本文件
有些文件可能不是用固定的分隔符去分隔字段的(比如空白符或其它模式),可以传递一个正则表达式'\s+'作为read_table的分隔符。

pd.read_table('file.txt',sep='\s+')
df.to_table('file.txt')
Format Type Data Description Reader Writer
text CSV read_csv to_csv
text JSON read_json to_json
text HTML read_html to_html
text local clipboard read_clipboard to_clipboard
binary MS Excel read_excel to_excel
binary Open Document read_excel
binary HDF5 Format read_hdf to_hdf
binary Feather Format read_feather to_feather
binary Parquet Format read_parquet to_parquet
binary Msgpack read_msgpack to_msgpack
binary Stata read_stata to_stata
binary SAS read_sas
binary Python Pickle Format read_pickle to_pickle
SQL SQL read_sql to_sql
SQL Google Big Query read_gbq to_gbq

(4)显示前n条数据

df.head(n)

(5)显示后n条数据

df.tail(n)

(6)查看数据维度

df.shape

(7)数据集基本信息

df.info() 
#A method in Pandas that provides a concise summary of the DataFrame’s information.

(8)数据集的基本统计信息

df.describe()
#A method in Pandas that computes various summary statistics of the DataFrame’s numerical columns.

(9)获取数据集索引

df.index

(10)查看数据值

df.values

(11)获取数据集所有列名

df.columns

(12)获取列类型

df.dtypes
# 查看某一列格式
df['col_name'].dtype

(13)设置索引:col_name为索引的列名

df.set_index('col_name')

(14)重置索引

# 不保留原索引到DataFrame中
df.reset_index(drop=True)

(15)修改数据类型

df['col_name'].astype(np.float32)

(16)修改列名

# 使用字典参数可修改不同的列名
df.rename(columns={'col_name':'new_col_name'})

(17)调整列的顺序

# 新列的顺序
col_names = ['col1', 'col2', 'col3', 'col4']
df[col_names]

访问数据

(1)访问某列

df['col_name']

(2)访问多列

df[['col1_name', 'col2_name']]

(3)按位置访问某列

# 访问第一列
df[df.columns[0]]

(4)按位置访问多列

# 访问第3至第5列
df[df.columns[2:5]]

(5)访问类型为np.int32的所有列

df[[c for c in df.columns if df[c].dtype == np.int32]]

(6)访问特定位置的数据:索引访问

df.loc[index_name, col_name]

(7)访问特定位置的数据:位置访问

# 访问第2行、第三列单元格数据
df.iloc[2,3]

数据筛选

(1)筛选某列值大于阈值的所有行

# 筛选col_name列大于threshold的所有行
df.loc[df['col_name'] > threshold, :]

(2)多条件筛选

# 筛选条件
cond = (df['col1_name'] == 'A') & (df['col2_name'] == 'B')

df.loc[cond, :]

(3)多值匹配

df.loc[df['col_name'].isin('A', 'B')]

(4)模式匹配

# 开头包含某个字符
df.loc[df['col_name'].str.startswith('A'), :]

# 中间包含某值的模式匹配
df.loc[df['col_name'].str.contains('A'), :]

(5)where筛选

df.where(df['col_name'] == 'A')

数据处理

(1)检查缺失值

pd.isna(df)
# pd.isnull(df)
# df.isna()
# df.isnull()
# 查看某列是否为空
df['col_name'].isna()

(2)删除缺失值:按行删除,只要该行有缺失值即删除

df.dropna()

(3)删除缺失值:按行删除,该行所有值都缺失才删除

df.dropna(how='all')

(4)删除缺失值:按列删除,只要该列有缺失值即删除

df.dropna(axis=1, how='any')

(5)删除缺失值:按列删除,该列所有值都缺失值才删除

df.dropna(axis=1, how='all')

(6)删除重复行

# keep参数可用于设置保留哪个值
df.drop_duplicates('col_name')

(7)对索引进行排序

df.sort_index()

(8)对某列进行排序

# 对col_name列进行降序排列
df.sort_values(by='col_name', ascending=False)

(9)对多列进行排序

# 对col1_name、col2_name分别按降序、升序排列
df.sort_values(by=['col1_name', 'col2_name'], ascending=[False, True])

(10)增加列

df.assign()

(11)删除列

df.drop('col_name', axis=1)

(12)删除行

df.drop('index_name', axis=0)

(13)查看某列的唯一值

df['col_name'].unique()

(14)查看唯一值数量

df.nunique()
# 查看某一列唯一值数量
df['col_name'].nunique()

(15)填充缺失值

df.fillna(value=0)
# 用均值填充缺失值
df['col_name'].fillna(df['col_name'].mean())

(16)字符串替换

df['col_name'].replace('replaced_str', 'new_str')

数值运算

(1)求各列最小值

df.min()

(2)求各列最大值

df.max()

(3)求各列和及平均值

# 求各列和
df.sum()
# 求各列平均值
df.mean()

(4)求某一列最大值所在的位置

df['col_name'].idxmax()

(5)求各列之间的相关性

df.corr()

以上的各函数用法中,我们都可以修改axis参数,当axis=0时表示对行进行操作,当axis=1时表示对列进行操作。

表连接

(1)Merge:类似SQL连接,多参数可选择
# 左连接
pd.merge(left=df1, right=df2, on='union_key', how='left')
# 右连接
pd.merge(left=df1, right=df2, on='union_key', how='right')
# 内连接
pd.merge(left=df1, right=df2, on='union_key', how='inner')
# 外链接
pd.merge(left=df1, right=df2, on='union_key', how='outer')
(2)concat:可根据axis方向进行横向或纵向拼接
# 按列进行拼接
pd.concat([left, right], axis=1)
# 按行进行拼接
pd.concat([left, right], axis=0)
(3)append:添加行
# s为Series
df.append(s, ignore_index=True)

分组聚合

(1)单个分组变量
# 对col_name列进行分组,并计算每组的平均值
df.groupby('col_name').agg(np.mean)

(2)多个分组变量

# 对col1_name、col2_name进行分组,并分别计算平均值和最大值
df.groupby(['col1_name', 'col2_name']).agg([np.mean, max])

函数应用

(1)map:根据提供的函数对序列做映射

# 映射函数
def gender_map_func(g):
    if gender == '男':
        return 1
    else:
        return 0

# 将gender列的男、女映射为1和0
df['gender'].map(gender_map_func)

(2)apply:可作用于Series或DataFrame,比map功能更复杂高级

# 上面map函数功能可用下面的apply实现
df['gender'].apply(lambda x: 1 if x == '男' else 0)

# 另一种用法
def apply_age(x, bias):
    return x + bias

# 将age列均减去3
df['age'].apply(apply_age, args=(-3, ))

(3)applymap:对DataFrame中的每个元素执行操作

# 将df中所有元素均加1
df.applymap(lambda x: x + 1)

# 所有元素保留两位有效小数
df.applymap(lambda x: '%.2f'%x)
posted @ 2023-02-23 15:30  华小电  阅读(238)  评论(0编辑  收藏  举报