dataframe转dict_dict转为dataframe
将dataframe的一行转成一个字典python
f = open('file.csv','a',newline='')# encoding: utf-8
dataframe转dict_dict转为dataframe
dataframe转dict_dict转为dataframe
元素级的Python函数也是可以用的,使用applymap方法:
import pandas as pd
a = ['Name', 'Age', 'Gender']
b = ['Ali', '19', 'China']
data = pd.DataFrame(zip(a, b), columns=['project', 'attribute'])
print data
print dict_country
输出显示
project attribute
0 Name Ali
1 Age 19
2 Gender China
{'Gender': ['China'], 'Age': ['19'], 'Name': ['Ali']}
值得注意的是,转置之前需要设置指定的索引,否则会按照默认索引转换成这样:
{0: ['Name', 'Ali'], 1: ['Age', '19'], 2: ['Gender', 'China']}
如何使用python读取word的表格并输出为字典?
有时候,在Python中需要将dataframe类型转换为字典类型,下面的方法帮助我们解决这一问题。 任务代码。直接读取索引、切片value写入csv文件,
import csv
w = writer(f)
w.writerow(dict(key))
打开csv文件另存为excel.
如果是很多个字典组成的列表,形式像[{a:1,b:2,c:3},……{a:4,b:5,c:6}],就可以用pandas来进行处理,存储为excel, 表头为a,b,c
from pandas import DataFrame as DF
df = DF(dict_l)
df.to_csv(filename)
这个字典不好看啊!
直接读取value写入csv文件,
import csv
w = writer(f)
w.writerow(dict(key))
打开csv文件另存为excel.
如果是很多个字典组成的列表,形式像[{a:1,b:2,c:3},……{a:4,b:5,c:6}],就可以用pandas来进行处理,存储为excel, 表头为a,b,c
from pandas import DataFrame as DF
df = DF(dict_l)
df.to_csv(filename)
Pandas系列1-DataFrame之初始化
这里需要注意的是如果不指定columns参数,有可能导致某些为空的field没有对应的列,如果指定了列名称,则如果相对应的域没有数据的话,就会自动置为nanDataFrame有多种初始化方法,主要分为以下几种情况:
下面分别介绍:
总的来说,如果容器对象是一个list,那么其中上面两个方法返回一个新的Series或者DataFrame,对原数据没有影响,如果想在原数据上进行直接修改,使用inplace参数:的就是一条行记录,而如果是dict,那么就相当于列记录,即key对应的是column name,而values即为这一列的值,而values一般可以通过list存储,也可以通过Series对象存储。
通过1D data series初始化的时候,如果有多列,那么需要等长
注意与上边的dict of lists区分,如果最外层是dict,那么key值默认是column label。
而在list of dicts中,每个dict都是一个record,或者说一行
pandas通过各种数据文件也可以初始化,比如csv文件,excel文件,json文件,html文件等,详见下图
下面以 read_csv 详细解释下读取csv文件以及初始化的过程
read_csv 的完整文档参考 read_csv api ,下面通过示例对常用的parameter进行解释:
这里以MongoDB为例
Pandas-DataFrame基础知识点总结
'B' : ['b1','b2','b3']}DataFrame是一种表格型数据结构,它含有一组有序的列,每列可以是不同的值。DataFrame既有行索引,也有列索引,它可以看作是由Series组成的字典,不过这些Series公用一个索引。
我们可以根据列名来选取一列,返回一个Series:DataFrame的创建有多种方式,不过最重要的还是根据dict进行创建,以及读取csv或者txt文件来创建。这里主要介绍这两种方式。
根据字典创建
DataFrame的行索引是index,列索引是columns,我们可以在创建DataFrame时指定索引的值:
使用嵌套字典也可以创建DataFrame,此时外层字典的键作为列,内层键则作为索引:
我们可以用index,columns,values来访问DataFrame的行索引,列索引以及数据值,数据值返回的是一个二维的ndarray
读取文件
读取文件生成DataFrame最常用的是read_csv,read_table方法。该方法中几个重要的参数如下所示:
其他创建DataFrame的方式有很多,比如我们可以通过读取mysql或者mongoDB来生成,也可以读取json文件等等,这里就不再介绍。
在DataFrame的处理中经常会遇到轴的概念,这里先给大家一个直观的印象,我们所说的axis=0即表示沿着每一列或行标签索引值向下执行方法,axis=1即表示沿着每一行或者列标签模向执行对应的方法。
我们还可以选取多列或者多行:
当然,在选取数据的时候,我们还可以根据逻辑条件来选取:
pandas提供了专门的用于索引DataFrame的方法,即使用ix方法进行索引,不过ix在最新的版本中已经被废弃了,如果要是用标签,使用loc方法,如果使用下标,使用iloc方法:
修改数据
可以使用一个标量修改DataFrame中的某一列,此时这个标量会广播到DataFrame的每一行上:
也可以使用一个列表来修改,不过要保证列表的长度与DataFrame长度相同:
可以使用一个Series,此时会根据索引进行匹配:
重新索引
使用reindex方法对DataFrame进行重新索引。对DataFrame进行重新索引,可以重新索引行,列或者两个都修改,如果只传入一个参数,则会从新索引行:
填充数据只能按行填充,此时只能对行进行重新索引:
丢弃指定轴上的值
可以使用drop方法丢弃指定轴上的值,不会对原DataFrame产生影响
算术运算
DataFrame在进行算术运算时会进行补齐,在不重叠的部分补足NA:
可以使用fill_value方法填充NA数据,不过两个df中都为NA的数据,该方法不会填充:
函数应用和映射
numpy的元素级数组方法,也可以用于作Pandas对象:
另一个常见的作是,将函数应用到由各列或行所形成的一维数组上。DataFrame的apply方法即可实现此功能。
排序和排名
对于DataFrame,sort_index可以根据任意轴的索引进行排序,并指定升序降序
DataFrame也可以按照值进行排序:
汇总和计算描述统计
DataFrame中的实现了sum、mean、max等方法,我们可以指定进行汇计的轴,同时,也可以使用describe函数查看基本所有的统计项:
DataFrame也实现了corr和cov方法来计算一个DataFrame的相关系数矩阵和协方矩阵,同时DataFrame也可以与Series求解相关系数。
处理缺失数据
Pandas中缺失值相关的方法主要有以下三个:
isnull方法用于判断数据是否为空数据;
fillna方法用于填补缺失数据;
dropna方法用于舍弃缺失数据。
对DataFrame来说,dropna方法如果发现缺失值,就会进行整行删除,不过可以指定删除的方式,how=all,是当整行全是na的时候才进行删除,同时还可以指定删除的轴。
DataFrame填充缺失值可以统一填充,也可以按列填充,或者指定一种填充方式:
ValueError: arrays must all be same length
这又分为以下几种方式d={ 'NUM' : radict_l = [{a:1,b:2,c:3},……{a:4,b:5,c:6}]nge(3),
'C' : ['c1','c2','c3'],
'D' : ['d1','d2','d3','d4'],
'E' : ['e1','e2','e3'],
会报错,因为会把key转换成列名,后面的数组转化为对应的值,必须长度一样,这里D多了
解决方法:
pd.DataFrame.from_dict(d, orient='index')
但是这样在to_excel的时候文件里只有values没有key
我希望把key也保存在文件里
df = df.reset_index().rename(columns={'index': 'key'}) 就可以了
pd.read_csv(路径,skiprows=9,nrows=10),忽略前9行,往下读10行
pandas之DataFrame对象
DataFrame这种列表式数据结构跟excel表相似,其设计初衷是将Series的使用场景由一维扩展到,DataFrame由按一定顺序排列的多列数据组成,各列的数据类型可以有所不同.
DataFrame对象有两个索引数组( index和columns ),个数组与行相关,它与Series的索引数组极为相似,每个索引值都跟所在的一行相关联,第二个数组包含一系列列标签(每个值相当于列名), DataFrame可以理解为一个由Series组成的字典,其中dict_country = data.set_index('project').T.to_dict('list')每一列的名称作为字典的键,形成DataFrame的列的Series作为字典的值,每个Series的所有元素映射到叫Inf = open('file.csv','a',newline='')dex的标签数组中 .
使用字典构造DataFrame对象,字典的键为columns的值,字典的值为columns的值对应的Series对象.
如果用来创建DataFrame的dict中存在你不需要的数据,你可以指定columns参数来构造DataFrame对象,新建的DataFrame各列顺序与你指定的列顺序一样.
也可以指定index参数构造DataFrame对象,如果没有指定,默认是从0开始依次递增的数组.
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系 836084111@qq.com 删除。