dataframe去除空值(dataframe去除空格)
大家好!今天让创意岭的小编来大家介绍下关于dataframe去除空值的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。
ChatGPT国内免费在线使用,一键生成原创文章、方案、文案、工作计划、工作报告、论文、代码、作文、做题和对话答疑等等
只需要输入关键词,就能返回你想要的内容,越精准,写出的就越详细,有微信小程序端、在线网页版、PC客户端
本文目录:
一、pandas透视之后如何表头很奇怪
百度知道
pandas透视之后如何表头很奇怪
司徒为0f1
贡献了超过424个回答
关注
成为第1位粉丝
1、修改表头(columns)1、修改所有列列名如:a,b修改为A、B。df.columns = ['A','B']print(df)结果:A B0 1 11 2 22、只修改指定列列名如:a修改为Adf.rename(columns={'a':'A'},inplace=True)print(df)1212结果A b0 1 11 2 22 3 31其他df:任意的Pandas DataFrame对象s:任意的Pandas Series对象raw:行标签col:列标签导入依赖包:import pandas as pdimport numpy as np12121、导入数据pd.read_csv(filename_path):从CSV文件导入数据pd.read_table(filename_path):从限定分隔符的文本文件导入数据pd.read_excel(filename_path):从Excel文件导入数据pd.read_sql(query, connection_object):从SQL表/库导入数据pd.read_json(json_string):从JSON格式的字符串导入数据pd.read_html(url):解析URL、字符串或者HTML文件,抽取其中的tables表格pd.read_clipboard():从你的粘贴板获取内容,并传给read_table()pd.DataFrame(dict):从字典对象导入数据,Key是列名,Value是数据2、导出数据df.to_csv(filename_path):导出数据到CSV文件df.to_excel(filename_path):导出数据到Excel文件df.to_sql(table_name, connection_object):导出数据到SQL表df.to_json(filename_path):以Json格式导出数据到文本文件3、创建测试数据pd.DataFrame(np.random.rand(20,5)):创建20行5列的随机数组成的DataFrame对象pd.Series(my_list):从可迭代对象my_list创建一个Series对象df.index = pd.date_range('1900/1/30', periods=df.shape[0]):增加一个日期索引4、查看、检查数据df.head(n):查看DataFrame对象的前n行(不加参数,默认前10行)df.tail(n):查看DataFrame对象的最后n行(不加参数,默认后10行)df.shape():查看行数和列数(维度查看)df.info():查看索引、数据类型和内存信息df.describe():查看数值型列的汇总统计s.value_counts(dropna=False):查看Series对象的唯一值和计数df.apply(pd.Series.value_counts):查看DataFrame对象中每一列的唯一值和计数df.dtypes:查看每一列的数据类型(扩展:df['two'].dtypes,查看“two”列的类型)df.isnull():查看空置(注:空置部分会用true显示,不是空置False显示)(扩展:df['two'].isnull,查看“two”这一列的空置)df.values:查看数据表的值df.column5、数据选取(具体使用见https://www.cnblogs.com/luckyplj/p/13274662.html)df.isin([5]):判断全部数据值中是否有5df[col].isin([5]):判断列col中是否有5df[col]:根据列名,并以Series的形式返回列df[[col1, col2]]:以DataFrame形式返回多列s.iloc[0]:按位置选取行数据s.loc['index_one']:按索引选取行数据df.loc[:,'reviews'] 获取指定列的数据 注意: 第一个参数为:表示所有行,第2个参数为列名,设置获取列名为review的数据df.loc[[0,2],['customername','reviews','review_fenci']] 选择指定的多行多列 参数说明: [0,2] 这个列表有两个元素0,2表示选择第0行和第2行['customername','reviews','review_fenci']这个列表有3个元素表示选择列名为'customername','reviews','review_fenci‘的这3列df.iloc[0,:]:返回第一行df.iloc[0,0]:返回第一行的第一个元素df.ix[0] 或 df.ix[raw] :ix函数可以根据行位置或行标签选择行数据注:loc函数根据行/列标签(用户自定义的行名、列名)进行行选择;iloc函数根据行/列位置(默认的行列索引)进行行选择;6、数据清理df.columns = ['a','b','c']:重命名列名pd.isnull():检查DataFrame对象中的空值,并返回一个Boolean数组pd.notnull():检查DataFrame对象中的非空值,并返回一个Boolean数组df.dropna():删除所有包含空值的行df.dropna(axis=1):删除所有包含空值的列df.dropna(axis=1,thresh=n):删除所有小于n个非空值的行df.fillna(x):用x替换DataFrame对象中所有的空值(注:fillna()会填充nan数据,返回填充后的结果。如果希望在原DataFrame中修改,则把inplace设置为True。如,df.fillna(0,inplace=True))mydf['列名']=mydf['列名'].fillna(0) 某一列的空值补零s.astype(float):将Series中的数据类型更改为float类型df[col].astype(float):将DataFrame某列数据类型改为float类型s.replace(1,'first'):用‘first’代替所有等于1的值(替换的是值,不是列名也不是索引名)s.replace([1,3],['one','three']):用'one'代替1,用'three'代替3df[col].replace(1,1.0,inplace=True):列col中的值1用1.0替换df.replace([1,3],['one','three'])df.rename(columns=lambda x: x + 1):批量更改列名df.rename(columns={'old_name': 'new_ name'}):选择性更改列名df.set_index('column_one'):将column_one这一列变为索引列df.rename(index=lambda x: x + 1):批量重命名索引df[col]=df[col].str.upper()或df[col].str.lower():基于列的大小写转换df[col]=df[col].map(str.strip):清除某列的空格df.drop_duplicates(subset=col,keep='fisrt',inplace=Flase)注:这个drop_duplicate方法是对DataFrame格式的数据,去除特定列下面的重复行。返回DataFrame格式的数据。subset : column label or sequence of labels, optional 用来指定特定的列,默认所有列keep : {‘first’, ‘last’, False}, default ‘first’ 删除重复项并保留第一次出现的项inplace : boolean, default False 是直接在原来数据上修改还是保留一个副本7、数据处理df[df[col] > 0.5]:选择col列的值大于0.5的行df.sort_values(col1):按照列col1排序数据,默认升序排列df.sort_values(col2, ascending=False):按照列col1降序排列数据df.sort_values([col1,col2], ascending=[True,False]):先按列col1升序排列,后按col2降序排列数据df.groupby(col):返回一个按列col进行分组的Groupby对象df.groupby([col1,col2]):返回一个按多列进行分组的Groupby对象df.groupby(col1)[col2]:返回按列col1进行分组后,列col2的均值df.pivot_table(index=col1, values=[col2,col3], aggfunc=max):创建一个按列col1进行分组,并计算col2和col3的最大值的数据透视表df.groupby(col1).agg(np.mean):返回按列col1分组的所有列的均值data.apply(np.mean):对DataFrame中的每一列应用函数np.meandata.apply(np.max,axis=1):对DataFrame中的每一行应用函数np.maxdf.isin8、数据合并df1.append(df2):将df2中的行添加到df1的尾部df.concat([df1, df2],axis=1):将df2中的列添加到df1的尾部df1.join(df2,on=col1,how='inner'):对df1的列和df2的列执行SQL形式的join9、数据统计
二、请问我怎么才能把下面这种带空值的数据用python转换成DataFrame格式?
用pandas库啊
看你的数据是什么格式,是txt还是html?
可能需要先稍稍整理下才能直接导入为DataFrame
三、python数据分析2:DataFrame对象
DataFrame对象:二维表数据结构,由行列数据组成的表格
常用index表示行,columns表示列
'''
语文 数学 英语
0 110 105 99
1 105 88 115
2 109 120 130
'''
# print(df.columns) # Index(['语文', '数学', '英语'], dtype='object')
# print(df.index) # Int64Index([0, 1, 2], dtype='int64')
# 遍历DataFrame数据的每一列
'''
0 110
1 105
2 109
Name: 语文, dtype: int64
0 105
1 88
2 120
Name: 数学, dtype: int64
0 99
1 115
2 130
Name: 英语, dtype: int64
'''
1.创建一个DataFrame对象
pandas.DataFrame(data,index,columns,dtype,copy)
# data表示数据,可以是ndarray数组,series对象、列表、字典等
# index表示行标签(索引)
# columns表示列标签(索引)
# dtype每一列数据的数据类型
# copy用于复制数据
# 返回值DataFrame
通过二维数组创建成绩表
'''
语文 数学 英语
0 110 105 99
1 105 88 115
2 109 120 130
'''
2.通过字典创建DataFrame对象
value值只能是一维数组或单个的简单数据类型
# 数组,则要求所有的数组长度一致
# 单个数据,每行都需要添加相同数据
'''
语文 数学 英语 班级
0 110 105 109 高一7班
1 105 88 120 高一7班
2 99 115 130 高一7班
'''
'''
【DataFrame属性】
values 查看所有元素的值 df.values
dtypes 查看所有元素的类型 df.dtypes
index 查看所有行名、重命名行名 df.index df.index=[1,2,3]
columns 查看所有列名、重命名列名 df.columns df.columns=['语','数']
T 行列数据转换 df.T
head 查看前n条数据,默认5条 df.head() df.head(10)
tail 查看后n条数据,默认5条 df.tail() df.tail(10)
shape 查看行数和列数,[0]表示行,[1]表示列 df.shape[0] df.shape[1]
info 查看索引,数据类型和内存信息 df.info
【DataFrame函数】
describe 查看每列的统计汇总信息,DataFrame类型 df.describe()
count 返回每一列中的非空值的个数 df.count()
sum 返回每一列和和,无法计算返回空值 df.sum()
max 返回每一列的最大值 df.max()
min 返回每一列的最小值 df.min()
argmax 返回最大值所在的自动索引位置 df.argmax()
argmin 返回最小值所在的自动索引位置 df.argmin()
idxmax 返回最大值所在的自定义索引位置 df.idxmax()
idxmin 返回最小值所在的自定义索引位置 df.idxmin()
mean 返回每一列的平均值 df.mean()
median 返回每一列的中位数 df.median()
var 返回每一列的方差 df.var()
std 返回每一列的标准差 df.std()
isnull 检查df中的空值,空值为True,否则为False,返回布尔型数组 df.isnull()
notnull 检查df中的空值,非空值为True,否则为False,返回布尔型数组 df.notnull()
中位数又称中值,是指按顺序排列的一组数据中居于中间位置的数
方差用于度量单个随机变量的离散程序(不连续程度)
标准差是方差的算术平方根,反映数据集的离散程度
'''
3. 导入.xls或.xlsx文件
# pandas.read_excel(io,sheetname=0,header=0,names=None,index_col=None,usecols=None,squeeze=False,dtype=None,engine=None,converters=None,true_values=None,false_values=None,skiprows=None,nrow=None,na_values=None,keep_defalut_na=True,verbose=False,parse_dates=False,date_parser=None,thousands=None,comment=None,skipfooter=0,conver_float=True,mangle_dupe_cols=True,**kwds)
'''
io 字符串,xls或xlsx文件路径或类文件对象
sheet_name:None、字符串、整数、字符串列表或整数列表,默认值为0
字符串用于工作表名称;整数为索引,表示工作表位置
字符串列表或整数列表用于请求多个工作表,为None时则获取所有的工作表
sheet_name = 0 第一个Sheet页中的数据作为DataFrame对象
sheet_name = 1 第二个Sheet页中的数据作为DataFrame对象
sheet_name = 'Sheet1' 名为Sheet1的Sheet页中的数据作为DataFrame对象
sheet_name = [0,1,'Sheet3'] 第一个,第二个和名为Sheet3的Sheet页中的数据作为DataFrame对象
header:指定作为列名的行,默认值为0,即取第一行的值为列名。或数据不包含列名,则为header=None
names:默认值为None,要使用的列名列表
index_col:指定列为索引列,默认值为None,索引0是DataFrame对象的行标签
usecols:int、list或字符串,默认值为None
如为None,则解析所有列
如为int,则解析最后一列
如为list列表,则解析列号和列表的列
如为字符串,则表示以逗号分隔的Excel列字母和列范围列表
squeeze:布尔值,默认为False,如果解析的数据只包含一列,则返回一个Series
dtype:列的数据类型名称为字典,默认值为None
skiprows:省略指定行数的数据,从第一行开始
skipfooter:省略指定行数的数据,从尾部数的行开始
4.导入指定Sheet页的数据
# sheet_name=0表示第一个sheet页的数据,以此类推,如果不指定,则导入第一页
5.指定行索引导入Excel数据
'''
Empty DataFrame
Columns: []
Index: [1, 3, 5]
'''
# 导入第一列数据
'''
Empty DataFrame
Columns: []
Index: [1, 3, 5]
'''
四、2019-12-13 (一)使用Xlwings从Excel,取数至Pandas的DataFrame和Series
"""
Createdon Mon Jul 8 22:05:32 2019
@author:
same3
"""
我们通过Xlwings 调用 Excel特定区域的数据集,将用来测试Panda对于None值/NaN/null/空值(以下统称空值)的处理,本次我们将会学到:
对含有空值的DataFrame进行各种选择操作,以及对空值数据的填充fillna()、删除dropna(),我们将在后面陆续介绍。
笔者是技术进步的拥趸,Python 的IDE:Spyder,从刚开始是Python(x,y)的作者为Python开发的一个简单的集成开发环境,发展到现在V4.0白、富、美的开发环境,着实令人惊艳!感谢这个世界上众多无私付出、默默耕耘的人们,有了你们,世界越来越好!
和其他的Python开发环境相比,Spyder最大的优点就是模仿MATLAB的“工作空间”的功能,可以很方便地观察和修改对象的值。
学习使用spyder(python IDE) 参考资料:https://blog.csdn.net/u010547283/article/details/76860428
'''
##引入三个Python 包
##Pandas:数据分析包
import pandas as pd
#"as"顾名思义,即以后可以在程序中以缩写pd 代表 pandas
#numpy:科学计算包
import numpy as np
##xlwings:python操作Excel的模块,最好的Excel操作包之一,有取代VBA的趋势
## xlwings中文入门学习资料之一:https://www.cnblogs.com/catgatp/p/7875683.html
## xlwings英文官方学习网站https://docs.xlwings.org/en/stable/
import xlwings as xw
##声明Excel应用程序,及workboos文件路径
file= r'D:\VBA\LEARNING_ERP.xlsm'
#字符串前面加r,是表示其后的字符串不转义,使用真实字符
wb=xw.Book(file)
wb.app.display_alerts=False
#禁止Excel弹出提示的对话框
#“view”作为存放结果数据集的sheet表
sht_view=wb.sheets['view']
##“基础表”作为存放原始数据集的sheet表
sht_base=wb.sheets['基础表']
##让我们看一下Excel中的原始数据吧:
'''选中存放原始数据集所在的区域,将数据导入Series
第25行第9列,可以使用sheet.range(row,column)的方法,也可以使用sheet[row-1,
column-1]的方法,第一种方法是标准的VB-Excel风格,下标从1开始,使用小括号();第二种方法遵循的是Python风格,下标从0开始,使用中括号[]。'''
s_choose=sht_base.range(25,9).options(pd.Series,expand='table').value
## expand='table',指示将从单元格沿right、down扩展取数,详见Xlwings文档。
'''按F5运行程序,然后在IDE右下方的即时窗口In[ ]:后面输入print(s_choose),按回车,显示如下:'''
##上面是VB-Excel风格,试一下第二种方法,遵循的是Python风格
s_choose=sht_base[24,8].options(pd.Series,expand='table').value
##可见两种方法,结果是一样的
##选中employee 所在的区域,第25行第1列
range_employee=sht_base[25,1].api.currentregion
##命名区域
range_employee.name='range_employee'
##导入Dataframe
df_employee=sht_base['range_employee'].options(pd.DataFrame,header=1,index=True).value
'''index=True,指示使用原始数据集中的索引默认第一列,而不是使用自动索引,自动索引从0开始
header=1,指示使用原始数据集中的第一行作为列名,而不是使用自动列名,更多使用方法,将在后面陆续介绍。'''
#按F5运行程序,然后在IDE右下方的即时窗口In:后面输入print(df_employee),按回车,显示如下:
##计算机显示的时候,对齐有跑题的嫌疑(对不上标题),不过,习惯了就好!
以上就是关于dataframe去除空值相关问题的回答。希望能帮到你,如有更多相关问题,您也可以联系我们的客服进行咨询,客服也会为您讲解更多精彩的知识和内容。
推荐阅读: