Pandas工作实践数据分析总结

本文介绍了Pandas库中常用的函数及数据处理技巧,包括修改列名、重置索引、数据清洗、数据可视化等关键操作,并提供了实际代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Pandas常用的功能函数和数据处理技巧

修改列名称

file_data = pd.read_csv(‘data.csv’)

file_data.rename(columns = {file_name.columns[0]:’new_name’}, inplace=True) 
# inplace表示是否要原地修改,原地修改意味着不用重新赋值

重置索引值

首选:

df_new  = df.reset_index(drop=True)

删除某行之前的和某行之后的数据

new_df = df.truncate(before=2, after=4)

Map操作

如果想对某列进行操作,比如,某列中的数据内容是1.男,类似这种方式,我想把1.去掉,这个时候怎么去做,可以这样:

file_data.columns = file_data.columns_name.map(lambda x: x.split('.')[-1])

如果想访问某一列的数据

df.columns_name 或者 df[‘columns_name’]

数据的可视化

%matplotlib inline

plt.hist(df.columns_name)

删除缺失值,注意这里需要赋值操作,不然是不生效的

new_df = df.dropna()

其中有个参数为how,一行中都有缺失才删除

new_df = df.dropna(how=‘all’)

填补缺失值(用均值)

new_data.fillna(mean)

使用前向来填充

 new_data.fillna(method=‘ffill’)

使用后向来填充

new_data.fillna(method=‘bfill’)

使用常量来填补缺失值

 pd.fillna({‘x’:2,’y’:3})

标记重复值

df.duplicated()返回的是布尔值,是否重复

删除重复值

如果按照某些特征进行重复比较和删除

new_df = df.drop_duplicates(['a','b'])

汇总函数

横向或者纵向汇总 

df.sum(axis=0,skipna=False)

如果用pd.read_csv读取文件的时候要注意

如果csv文件中没有列名的时候,可以操作如下指定列名

# 如果读取的csv没有列名,可以用这种方式增加列名
df = pd.read_csv('a.csv',names=['var1','var2'])

如果想用数据中的某列作为索引,可以这样写

df = pd.read_csv('a.csv',names=['var1','var2'],index_col='var1')

其中还有sep参数,默认的是逗号作为分隔符,如果是别的符号可以修改

如果文件的开头有注释,这时候你可以选择要跳过的行数

# 实现忽略前两行,读取以逗号分隔的csv文件
df = pd.read_csv('a.csv',skiprows=[0,1],sep=',')

这个时候会忽略前两行。

如果想要读取指定前N行,可以用这样的参数

# 表示读取该csv文件的前1000行
df = pd.read_csv('a.csv',nrows=1000)

设定条件进行赋值

# 对col1的值为4,并且col2列的值为5,满足这种前提,对y_hat列的值,赋值为-999
df.loc[(df['col1']==4)&(df['col2']==5),'y_hat'] = -999

对某些值进行替换

# 对于df中的各个值,如果有1,2,3,4,5的值,替换为999
new_df = df.replace([1,2,3,4,5],999)

对data中的1,2,3,4,替换为np.nan,这个时候并没有对data本身的数据进行替换操作。要进行赋值才能够保留替换后的数据。

也可以是字典的形式:

# 将df中值为-999的替换为None,将-1000替换为0
df = df.replace({-999:np.nan,-1000:0})

将连续值进行离散化(面元)

ages = [20,23,34,55,67,25,40,89,100,12,20,39]
bins = [10,20,30,40,50,100]
cats = pd.cut(ages,bins)
cats.codes
>>> array([0, 1, 2, 4, 4, 1, 2, 4, 4, 0, 0, 2], dtype=int8)

在pandas对象添加一行

# point_content 为指定的行
df.append(point_content,ignore_index=True)

Ignore_index 表示的是忽略添加行的索引

如果已知两个表,想要做一个连接,左连接或者右连接:

# 按照a的id1和b的id2列做一个右连接;on里面是key
# 意思就是a中的id1和b中的id2值相同的部分
new_df = pd.merge(a,b,how='left',on=['id1','id2'])

如果将索引从1开始,不希望从0开始

df = df.index + 1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

国企打工人

随缘吧打赏与否还是会坚持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值