基本操作
(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)读取、写入文本文件
pd.read_table('file.txt')
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()
(8)数据集的基本统计信息
df.describe()
(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)
标签:name,df,pandas,read,pd,常用命令,col,axis
From: https://www.cnblogs.com/conpi/p/17148172.html