首页 > 编程知识 正文

python数据处理案例,python实战案例

时间:2023-05-03 17:15:38 阅读:160322 作者:3685

python数据处理——pandas的基本使用(一)1.1 文本读取,pd.read_csv(),pd.read_table();

在pandas读取文本(txt,excel )中,读取_ CSV )和读取_ table ); 两个函数用于读取文本,但在读取文本时,前者将(逗号)作为分隔符读取,后者将(制表符)作为分隔符读取。 将读取的文本转换为二维Dataframe数据格式,以便直观干净地处理。 以pd.read_table )为例,假设为:

pd.read_table()用到的参数有:

里面参数很多,但常用到的下面几个

文件路径、想要阅读的txt、csv文件、web内容; seq,用于表分割字符串的分隔符。 一般来说,read_table ()默认为tab )、read_csv ) )

默认值为(逗号),可以根据情况自行设置; usercols,可以设置为提取自己需要的列名; 以下是url的网址内容,在文本之间使用制表符作为分隔符。

用pandas读取内容后,如下所示。

读取URL=' http://bit.ly/chip orders ' df1=PD.read _ table (URL ) #前五行中的数据df1.head )

# usecols参数是用于选择特定行的df=PD.read_table(URL,usecols=['order_id ',' item_price'] ) df.head _ table

不设置第一行名称

#header缺省为0,即把第1列作为列名,这里设为None,意味着不设定第1行的列名; DF11=PD.read_table(URL,header=None ) ) df11.head )1.2 读取时用names修改列名

#names=***,列名user_cols=['id ',' quantity ',' name ',' choice ',' price']df=PD.read_table ()

1.3 用describe()函数对描述大致数据

对Dataframe的各列整体进行基本统计; # count :数# unique:总体上被分为三个类别; # top :频率最高的value; # freq :出现频率最高的次数; df.describe (

1.4 shape函数返回二维数据的列数、行数

查看df.shape#dataframe的整体数据

1.5 读取到的 Dataframe 每一列数据类型为Serie

series数据列出df['name']##列中的数据。 此外,也可能是df.nameprint(type ) df['name']。)

1.6 处理数据中时利用columns改变列名

在Dataframe数据中重命名列,每个列名称后加上“_”; df.columns=[str(i ) ' _' for i in df.columns]df

1.7 利用drop函数删除特定的列

#pd.DataFrame删除某一列,使用函数drop,#第一个参数为单个标签或多个标签; # axis表示要删除的行或列,0表示行,1表示列。 # inplace=True和操作df1=dfdf1.drop(['name_ ',' choice_'] ',axis=1,inplace=True ) df1.head ) )

1.8使用map函数转换列中的数据格式

#修改某一列的数据,将price_的$改为; 利用lambda映射的df [ ' price _ ' ]=df [ ' price _ ' ].map (lambdax : str (x ).replace )、'') ) ) df

1.9 to_csv将 Dataframe数据直接写到csv文件中

将Dataframe导出为csv文件,#第一个参数描述要输出的文件名,指定None时返回字符串; # index表示行索引,缺省值为True,# header=True表示不保存列名。 # encoding='gbk ',输入代码方式为gbk df.to _ CSV (e :/ceshi/ab.CSV ),index=False,header=True,encoding='gbk

注:以上代码的所有执行都在jupyter notebook编辑器中完成

Pandas基本使用(2)— DataFrame.to_dict )函数使用Pandas处理数据的基本类型为DataFrame,在数据清洗时不一定会出现数据类型转换问题

,Pandas 在这方面也做的也非常不错,其中经常用的是 DataFrame.to_dict() 函数之间转化为字典类型;除了转化为字典之外,Pandas 还提供向 json、html、latex、csv等格式的转换:

to_dict() 函数基本语法

DataFrame.to_dict (self, orient='dict',* into=)* --- 官方文档

函数中只需要填写一个参数:orient 即可 ,但对于写入orient的不同,字典的构造方式也不同,官网一共给出了6种,并且其中一种是列表类型:

orient =‘dict’,是函数默认的,转化后的字典形式:{column(列名) : {index(行名) : value(值)
)}};orient =‘list’ ,转化后的字典形式:{column(列名) :{ values }};orient =‘series’ ,转化后的字典形式:{column(列名) : Series (values) (值)};orient =‘split’ ,转化后的字典形式:{‘index’ : [index],‘columns’
:[columns],’data‘ : [values]};orient =‘records’ ,转化后是 list形式:[{column(列名) :
value(值)}……{column:value}];orient =‘index’ ,转化后的字典形式:{index(值) : {column(列名) : value(值)}};

备注:

1,上面中 value 代表数据表中的值,column表示列名,index 表示行名,如下图所示:

2,{ }表示字典数据类型,字典中的数据是以 {key : value} 的形式显示,是键名和键值一一对应形成的。

2,关于6种构造方式进行代码实例

六种构造方式所处理 DataFrame 数据是统一的,如下:

>>> import pandas as pd>>> df =pd.DataFrame({'col_1':[1,2],'col_2':[0.5,0.75]},index =['row1','row2'])>>> df col_1 col_2row1 1 0.50row2 2 0.75 2.1,orient =‘dict’ — {column(列名) : {index(行名) : value(值) )}}

to_dict(‘list’) 时,构造好的字典形式:{第一列的列名:{第一行的行名:value值,第二行行名,value值},….};

>>> df col_1 col_2row1 1 0.50row2 2 0.75>>> df.to_dict('dict'){'col_1': {'row1': 1, 'row2': 2}, 'col_2': {'row1': 0.5, 'row2': 0.75}}

orient = 'dict 可以很方面得到 在某一列对应的行名与各值之间的字典数据类型,例如在源数据上面我想得到在col_1这一列行名与各值之间的字典,直接在生成字典查询列名为col_1:

>>> df col_1 col_2row1 1 0.50row2 2 0.75>>> df.to_dict('dict')['col_1']{'row1': 1, 'row2': 2}

2.2,orient =‘list’ — {column(列名) :{ values }};

生成字典中 key为各列名,value为各列对应值的列表

>>> df col_1 col_2row1 1 0.50row2 2 0.75>>> df.to_dict('list'){'col_1': [1, 2], 'col_2': [0.5, 0.75]}

orient = ‘list’ 时,可以很方面得到 在某一列 各值所生成的列表集合,例如我想得到col_2 对应值的列表:

>>> df col_1 col_2row1 1 0.50row2 2 0.75>>> df.to_dict('list')['col_2'][0.5, 0.75]

2.3,orient =‘series’ — {column(列名) : Series (values) (值)};

orient =‘series’ 与 orient = ‘list’ 唯一区别就是,这里的 value 是 Series数据类型,而前者为列表类型

>>> df col_1 col_2row1 1 0.50row2 2 0.75>>> df.to_dict('series'){'col_1': row1 1row2 2Name: col_1, dtype: int64, 'col_2': row1 0.50row2 0.75Name: col_2, dtype: float64}

2.4,orient =‘split’ — {‘index’ : [index],‘columns’ :[columns],’data‘ : [values]};

orient =‘split’ 得到三个键值对,列名、行名、值各一个,value统一都是列表形式;

>>> df col_1 col_2row1 1 0.50row2 2 0.75>>> df.to_dict('split'){'index': ['row1', 'row2'], 'columns': ['col_1', 'col_2'], 'data': [[1, 0.5], [2, 0.75]]}

orient = ‘split’ 可以很方面得到 DataFrame数据表 中全部 列名或者行名 的列表形式,例如我想得到全部列名:

>>> df col_1 col_2row1 1 0.50row2 2 0.75>>> df.to_dict('split')['columns']['col_1', 'col_2']

2.5,orient =‘records’ — [{column:value(值)},{column:value}….{column:value}];

注意的是,orient =‘records’ 返回的数据类型不是 dict ; 而是list 列表形式,由全部列名与每一行的值形成一一对应的映射关系:

>>> df col_1 col_2row1 1 0.50row2 2 0.75>>> df.to_dict('records')[{'col_1': 1, 'col_2': 0.5}, {'col_1': 2, 'col_2': 0.75}]

这个构造方式的好处就是,很方便得到 列名与某一行值形成 字典数据;例如我想要第2行{column:value}数据:

>>> df col_1 col_2row1 1 0.50row2 2 0.75>>> df.to_dict('records')[1]{'col_1': 2, 'col_2': 0.75}

2.6,orient =‘index’ — {index:{culumn:value}};

orient ='index’与2.1用法刚好相反,求某一行中列名与值之间一一对应关系(查询效果与2.5相似):

>>> df col_1 col_2row1 1 0.50row2 2 0.75>>> df.to_dict('index'){'row1': {'col_1': 1, 'col_2': 0.5}, 'row2': {'col_1': 2, 'col_2': 0.75}}#查询行名为 row2 列名与值一一对应字典数据类型>>> df.to_dict('index')['row2']{'col_1': 2, 'col_2': 0.75} 3,to_dict() 函数其它用法

在部分 2 只展示了这个函数的一部分功能,还有其他用法,例如可以快速索引第几行第几列的值(pandas内置索引函数),例如我想要第二行第二列的值,可以这样操作:

#to_dict 版本的:>>> df col_1 col_2row1 1 0.50row2 2 0.75>>> dict_1 = df.to_dict('index')>>> dict_2 = dict_1[list(dict_1.keys()[1])]>>> dict_2[list(dict_2.keys())[1]]0.75# pandas自带的>>> df col_1 col_2row1 1 0.50row2 2 0.75>>> df.iloc[1,1]0.75

参考链接 :
python数据处理——pandas的基本使用(一) :https://mp.weixin.qq.com/s/-jwjzt5lXHecAGTqcnEUlw

python数据处理——pandas的基本使用(二) :https://mp.weixin.qq.com/s/2OZBZJZNYXZe-xGY0Bz5Ug

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。