python数据处理的常用操作

摘要:
python数据处理1.生成数据2.数据表检查3.数据表清洗4.数据预处理5.数据提取6.数据筛选7.数据汇总8.数据统计9.数据输出1.生成数据1.导入数据表df=pd.read_excel('C:/Users/Admin/Desktop/types/output.xlsx')df1=pd.read_csv('C:/Users/Admin/Desktop/types/output.csv')2.

python数据处理

1.生成数据2.数据表检查3.数据表清洗4.数据预处理5.数据提取6.数据筛选7.数据汇总8.数据统计9.数据输出

1.生成数据

1.导入数据表

df=pd.read_excel('C:/Users/Admin/Desktop/types/output.xlsx')
df1=pd.read_csv('C:/Users/Admin/Desktop/types/output.csv')

2.创建数据表

df=pd.DataFrame(({"id":[1001,1002,1003,1004,1005,1006],
"date":pd.date_range('20130102',periods=6),
"city":['Beijing','SH','guangzhou','Shenzhen','shanghai','BEIJING'],
"age":[23,44,54,32,34,32],
"category":['100-A','100-B','110-A','110-C','210-A','130-F'],
"price":[1200,np.nan,2133,5433,np.nan,4432]}))

2.数据表检查

1.查看维度(行列)

df.shape

(6, 6)

2.数据表信息

df.info()

3.查看数据格式

#查看数据表各列格式
print(df.dtypes)
#查看数据表单列格式
print(df['city'].dtype)

4.查看空值

#检查数据是否为空值
print(df.isnull())
#检查特定列是否为空值
print(df['price'].isnull())

5.查看唯一值

#查看city列中的唯一值
print(df['city'].unique())

['Beijing ' 'SH' ' guangzhou ' 'Shenzhen' 'shanghai' 'BEIJING ']

6.查看数据表数据

print(df.values)

7.查看列名称

print(df.columns)

Index(['id', 'date', 'city', 'age', 'category', 'price'], dtype='object')

8.查看前多少行数据

#不设置值时,默认为5行
print(df.head(3))

9.查看前多少行数据

#不设置值时,默认为5行
print(df.tail(3))

3.数据表清洗

1.处理空值(删除或填充)

#删除数据表中含有空值的行
print(df)
df.dropna(how='any')
#使用数据0填空数据表中空值
df.fillna(value=0)
#使用price均值对NA进行填充
print(df['price'].fillna(df['price'].mean()))

2.清理空格

#清除city字段中的字符空格
df['city']=df['city'].map(str.strip)

3.大小写转换

#city列大小写转换
df['city']=df['city'].str.lower()

4.更改数据格式

#更改数据格式
df['age']=df['age'].astype(int)

5.更改列名称

df.rename(columns={'category':'category-size'})

6.删除重复值

print(df['city'])
#删除后出现的重复值(第一次的beijing被保留,最后出现的beijing被删除)
print(df['city'].drop_duplicates())
#设置keep='list'参数后,与之前删除重复值的结果相反,第一位出现的beijing被删除,保留最后一位出现的beijing
print(df['city'].drop_duplicates(keep='last'))

7.数值修改及替换

#数据替换
print(df['city'].replace('sh','shanghai'))

4.数据预处理

1.数据表合并

df1=pd.DataFrame({'id':[1001,1002,1003,1004,1005,1006,1007,1008],
'gender':['male','female','male','female','male','female','male','female'],
'pay':['Y','N','Y','Y','N','Y','N','Y'],
'm-point':[10,12,20,40,40,40,30,20]})
#数据表匹配合并
#内连接
df_inner=pd.merge(df,df1,how='inner')
#左连接
df_left=pd.merge(df,df1,how='left')
#右连接
df_right=pd.merge(df,df1,how='right')
#外连接
df_out=pd.merge(df,df1,how='outer')

2.设置索引列

print(df_inner.set_index('id'))

3.排序(按索引,按数值)

#按特定列的值排序
print(df_inner.sort_values(by=['age']))#默认升序,降序ascending=False
#按索引列排序
print(df_inner.set_index(keys='date'))#行索引进行排序

4.数据分组

#如果price列的值>3000,group列显示high,否则显示为low
df_inner['group']=np.where(df_inner['price']>3000,'high','low')
#对复合多个条件的数据进行分组标记
#对city列等于beijing并且price列大于等于4000的数据标记为1
df_inner.loc[(df_inner['city']=='beijing')&(df_inner['price']>=4000),'sign']=1

5.数据分列

#对category字段的值依次进行分列,并创建数据表,索引值为df_inner的索引列,列名称为category和size
split=pd.DataFrame((x.split('-')forxindf_inner['category']),index=df_inner.index,columns=['category','size'])
print(split)
#将完成分列后的数据表与原df_inner数据表进行匹配
df_inner=pd.merge(df_inner,split,right_index=True,left_index=True)
print(df_inner)

5.数据提取

1.按标签提取(loc)

#按索引提取单行的数据
print(df_inner.loc[3])
#按索引提取区域行数值
print(df_inner.loc[0:5])#提取0到5的数据行
#设置日期为索引
df_inner=df_inner.set_index('date')
#重设索引
print(df_inner.reset_index())#恢复索引
#提取4日之前的所有数据
print(df_inner[:'2013-01-04'])#从开始提取到这个日期

2.按位置提取(iloc)

#使用iloc按位置区域提取数据
print(df_inner.iloc[:3,:2])#行列
#使用iloc按位置单独提取数据
print(df_inner.iloc[[0,2,5],[4,5]])

3.按标签和位置提取(ix)

#使用ix按索引标签的位置混合提取数据
print(df_inner.ix[:'2013-01-03',:4])

4.按条件提取(区域和条件值)

#判断city列的值是否为beijing
print(df_inner['city'].isin(['beijing']))
#先判断city列里是否包含beijing和shanghai,然后将复合条件的数据提取出来
print(df_inner.loc[df_inner['city'].isin(['beijing','shanghai'])])
category=df_inner['category_x']
print(category)
#提取前三个字符,并生成数据表
print(pd.DataFrame(category.str[:3]))

6.数据筛选

使用‘与’条件进行筛选

#筛选大于25岁并且城市为北京的这些列['id','city','age','category_x','gender']的值
print(df_inner.loc[
(df_inner['age']>25)&(df_inner['city']=='beijing'),['id','city','age','category_x','gender']])

使用‘或’条件筛选

#筛选大于25岁或城市为北京的这些列['id','city','age','category_x','gender']的值,并按照年龄对其进行排序
print(df_inner.loc[
(df_inner['age']>25)|(df_inner['city']=='beijing'),['id','city','age','category_x',
'gender']].sort_values(by='age'))
print(df_inner.loc[
(df_inner['age']>25)|(df_inner['city']=='beijing'),['id','city','age','category_x',
'gender']].sort_values(by='id').city.count())

使用query函数进行筛选

#筛选出city列等于beijing或者shanghai的
print(df_inner.query('city==["beijing","shanghai"]'))
print(df_inner.query('city==["beijing","shanghai"]').price.sum())

7.数据汇总

1.分类汇总

#对所有列进行计数汇总
print(df_inner.groupby('city').count())
#按照城市对id字段进行汇总计数
print(df_inner.groupby('city')['id'].count())
#对两个字段进行汇总计数
print(df_inner.groupby(['city','size'])['id'].count())
#对city字段进行汇总并计算price的合计和均值
print(df_inner.groupby('city')['price'].agg([len,np.sum,np.mean]))

2.数据透视

#数据透视表
#设置city为行字段,size为列字段,price为值字段
print(pd.pivot_table(df_inner,index=["city"],values=["price"],columns=["size"],
aggfunc=[len,np.sum],fill_value=0,margins=True))

8.数据统计

1.数据采样

#简单的数据采样(随机抽取3条数据)
print(df_inner.sample(n=3))
#手动设置采样权重
weights=[0,0,0,0,0.5,0.5]
print(df_inner.sample(n=2,weight=weights))
#sample函数中的参数replace,用于设置采样数是否放回
#采样后不放回
print(df_inner.sample(n=6,replace=False))
#采样后放回
print(df_inner.sample(n=6,replace=True))

2.描述统计

#数据表描述性统计
print(df_inner.describe(),round(2).T)

3.标准差

print(df_inner['price'].std())

4.协方差

#两个字段间的协方差
print(df_inner['price'].cov(df_inner['m-point']))
#数据表中所有字段间的协方差
print(df_inner.cov())

5.相关分析

print(df_inner['price'].corr(df_inner['m-point']))
#数据表相关性分析
print(df_inner.corr())

9.数据输出

1.写入Excel

#输出到Excel格式
df_inner.to_Excel('excel_to_python.xlsx',sheet_name='bluewhale')

2.写入csv

#输出到CSV格式
df_inner.to_csv('excel_to_python.csv')

免责声明:文章转载自《python数据处理的常用操作》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇论文笔记:(ICCV2019)KPConv: Flexible and Deformable Convolution for Point CloudsiOS NSDictionary 转Json 去掉换行去掉空格下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

python ddt数据驱动二(json, yaml 驱动)

一、通过json文件驱动 import unittestfrom ddt import ddt, file_data@ddtclass MyTest(unittest.TestCase): # test_data_list.json里的数据是[1,2,3] @file_data('test_data_list.json') def tes...

influxdb数据库的安装部署(windows)二

1、把下载好的文件解压到目录中 2、以管理员身份运行cmd进入influxdb-1.7.6-1文件夹 3、生成influxdb数据的默认配置Config文件 4、修改Config配置信息 5、用配置好的config文件运行influxdb数据库 6、验证是否配置成功,双击打开influx.exe文件 配置成功!  7、influxdb数据库...

MongoDB中导出数据为csv文件

1. 打开命令行; 2. 输入如下指令(确保数据库是开着的,下面的数据库名称和集合名称以及域的名称可以根据需求修改) mongoexport -d myDB -c user -f _id,name,password,adress --csv -o ./user.csv 3. 说明: mongoexport -d myDB(myDB修改成...

python中如何调用.py文件

这里分为两种情况。 一、在python的安装目录下 直接在IDLE中输入from 文件名 import *命令即可。 注意new1.py文件中内容,有print语句。 二、未在python的安装目录下 使用命令为: 1.import sys #引入sys库体,python的信息模块 2.sys.path.append("路径") #系统路径中填写存放....

Python的断言assert

断言是用来判断是否让程序继续执行的一种辅助策略,可以提前阻止因为有些条件不满足而导致的程序崩溃。 断言的语法非常简单:assert express 如果experss为true, 程序继续执行,如果是false,则返回。 def divide(s): n = int(s) assert n != 0, 's should not be ze...

faiss索引基于数量级和内存限制的选择

它是一个能使开发者快速搜索相似多媒体文件的算法库。而该领域一直是传统的搜索引擎的短板。借助Faiss,Facebook 在十亿级数据集上创建的最邻近搜索(nearest neighbor search),比此前的最前沿技术快 8.5 倍,并创造出迄今为止学术圈所见最快的、运行于 GPU 的 k-selection 算法。Facebook 人工智能实验室(F...