python 数据处理(以Pandas为主)

读取数据

在这里插入图片描述

import pandas as pd
df = pd.read_csv('目标csv文件所在的绝对路径或者相对路径')   //其他的读取语法类似,df是自取的名字,pd.read_csv()就是把目标csv文件转换为dataframe格式。

添加、修改数据

①添加数据

import pandas as pd
from numpy import nan as NaN

df1 = pd.DataFrame([['Snow','M',22],['Tyrion','M',32],['Sansa','F',18],['Arya','F',14]], columns=['name','gender','age'])

在这里插入图片描述

print("----------在最后新增一列---------------")
print("-------案例1----------")
# 在数据框最后加上score一列,元素值分别为:80,98,67,90
df1['score']=[80,98,67,90]   # 增加列的元素个数要跟原数据列的个数一样

在这里插入图片描述

print("-------案例2----------")
print("---------在指定位置新增列:用insert()--------")
# 在gender后面加一列城市
# 在具体某个位置插入一列可以用insert的方法
# 语法格式:列表.insert(index, obj)
# index --->对象 obj 需要插入的索引位置。
# obj ---> 要插入列表中的对象(列名)

col_name=df1.columns.tolist()                   # 将数据框的列名全部提取出来存放在列表里
col_name.insert(2,'city')                      # 在列索引为2的位置插入一列,列名为:city,刚插入时不会有值,整列都是NaN
col_name.insert(col_name.index('age'),'education')   # 在age列前面插入一列,列名叫education
df1=df1.reindex(columns=col_name)              # DataFrame.reindex() 对原行/列索引重新构建索引值

df1['city'] = ['北京','山西','湖北','澳门']   # 给city列赋值
df1['education'] =['小学','初中','高中','大学'] 

在这里插入图片描述

print("----------新增行---------------")
# 重要!!先创建一个DataFrame,用来增加进数据框的最后一行
new_col=pd.DataFrame({'name':'lisa',
                  'gender':'F',
                  'city':'广州',
                  'education':'幼儿园',
                  'age':5,
                  'score':100},
                 index=[1])   # 自定义索引为:1 ,这里也可以不设置index

print("-------在原数据框df1最后一行新增一行,用append方法------------")
df1=df1.append(new_col,ignore_index=True)   # ignore_index=True,表示不按原来的索引,从0开始自动递增

在这里插入图片描述

②修改dataframe的列名字

df1.rename(columns={'score':'mark'},inplace=True)

在这里插入图片描述

③将某一列数据转换为自己想要表达的字段

city_mapping = {
            "北京": "Beijing",
            "山西": "ShanXi",
            "湖北": "HuBi",
            "澳门": "AoMen",
            "广州": "GuangZhou"}
df1['city'] = df1['city'].map(city_mapping)

在这里插入图片描述

④填充空值

看情况,如果不想过滤(删除)某些数据,我们可以选择使用fillna()方法填充空值,这里,我使用数值’0’替代NaN,来填充DataFrame。具体填充什么视情况而定,一般填充空值的用0或者该列的平均值来填充的用法比较多。
①先给原先的df1添加两行数据,数据里含有空值

#print("----------新增行---------------")
new = pd.DataFrame({'name':'lisi',
                 'gender':'M',
                 'city':'Beijing',
                 'education':'初中',
                 'age':12,
                 'mark':NaN},
                index=[1])  

#print("-------在原数据框df1最后一行新增一行,用append方法------------")
df1 = df1.append(new,ignore_index=True)   # ignore_index=True,表示不按原来的索引,从0开始自动递增

#print("----------新增行---------------")
new1 = pd.DataFrame({'name':'lisi',
                 'gender':'M',
                 'city':'Beijing',
                 'education':'初中',
                 'age':12,
                 'mark':NaN},
                index=[1])  

df1 = df1.append(new1,ignore_index=True)   # ignore_index=True,表示不按原来的索引,从0开始自动递增

在这里插入图片描述
②填充空值

df1 = df1.fillna(0.0)

在这里插入图片描述
在这里插入图片描述

删除数据

①删除指定一行的数据

df1 = df1.drop(2,axis=0,inplace=False)               #删除第3行

在这里插入图片描述

②删除指定一列的数据

df1 = df1.drop('education',axis=1,inplace=False)    #删除education这一列

在这里插入图片描述

③删除具有空值的数据

df1.dropna(subset=['mark'],how='all',inplace=True)  #删除mark列中具有空值那些行

在这里插入图片描述

③删除具有重复值的数据

在这里插入图片描述

#找出"age"存在重复的数据
df1[df1.duplicated(subset=["age"], keep='first')]

#删除“成绩”存在重复的数据
df1 = df1.drop_duplicates(subset=["age"], keep='first', inplace=False)

在这里插入图片描述

合并数据

①按列合并数据

在这里插入图片描述

②按行合并

在这里插入图片描述

转换数据格式(转换某一列的类型)

有时候,需要自己调整数据表中某一列的数据类型,有可能是int转float,也有可能是字符串转时间类型。具体需要转什么类型,是情况而定,在这里我就介绍两个比较常用的案例。

①int转float

在这里插入图片描述

②str转datetime

在这里插入图片描述

查看数据

①查看dataframe中关于数值型数据的描述

df_name.describe()

结果的索引将包括计数,平均值,标准差,最小值,最大值以及较低的百分位数和50。默认情况下,较低的百分位数为25,较高的百分位数为75。50百分位数与中位数相同。
在这里插入图片描述

②查看dataframe的属性描述,dataframe有多少行,各列数据的属性,占的内存是多少等

name.info()

在这里插入图片描述

③初略的显示dataframe前几行

有时候dataframe的行数太大,显示全部需要非常多的时间,一般显示前几行就够了。

name.head(x)  # 不输入x则表示默认显示前5行

在这里插入图片描述

④统计某一个列中各个值出现的次数:value_counts

在这里插入图片描述

⑤快速了解dataframe有几行几列

在这里插入图片描述

保存数据

将最终的处理好的dataframe转换为文件形式保存。这里我介绍两个个常用的形式

①dataframe转csv

# header是否保存列名   encoding设置以何种格式保存,不设置则默认为utf-8格式,index设置是否保存索引
dataframe_name.to_csv("路径+名字",header=True, encoding=None,index=False)

在这里插入图片描述
在这里插入图片描述

②dataframe转json(转的类型有点多,我贴个链接,大家有兴趣的可以去了解一下)

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_json.html

如果各位路过朋友觉得对自己有帮助的话,麻烦关注一下小编或者点个赞再走哦~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

会点东西的普通人

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值