pandas学习&读取和写入csv,excle
一、pandas学习:【Series,DataFrame】
1、Series:一维数组,与Numpy中的一维array类似。二者与Python基本的数据结构List也很相近,其区别是:List中的元素可以是不同的数据类型,而Array和Series中则只允许存储相同的数据类型,这样可以更有效的使用内存,提高运算效率。
2、DataFrame:二维的表格型数据结构。很多功能与R中的data.frame类似。可以将DataFrame理解为Series的容器。以下的内容主要以DataFrame为主。
导入的包:
from pandas import Series,DataFrame
import pandas as pd
# Series 就如同列表一样,一系列数据,每个数据对应一个索引值
'''
s=Series([1,3,'nihao','tt'],index=['old','sex','age','job'])
print(s)
结果:Index(['old', 'sex', 'age', 'job'], dtype='object')
print(s.index) #打印出起始和终点长度,以及步长print(s.values) #打印出里面的value值,列表形式展示:
结果:[1 3 'nihao' 'tt']
print(s) #展示类似键值对左右对齐方式,index为索引标print('#'*40 + '#'*40)
结果:
old 1
sex 3
age nihao
job tt
dtype: object
注:可以按照条件搜索print(s.index=['old','sex','age','job','he']),没有的显示为None
print(s['old']) #索引标识为old的值
print(pd.isnull(s)) #查看值是否为空,类型布尔,如果为空,则打印为true'''
结果:
old False
sex False
age False
job False
dtype: bool
=========================================================================
#DataFrame是一种二维的数据结构,column为索引列
data={'name':['google','baidu','yahoo'],'marks':[100,200,300],'price':[1,2,3]}
f=DataFrame(data,columns=['name','price','marks'],index=['001','002','003'])
print(f)
结果:没有的值为None
name price marks
001 google 1 100
002 baidu 2 200
003 yahoo 3 300
newdata= {"lang":{"firstline":"python","secondline":"java"}, "price":{"firstline":8000}}
#lang和price为列,firstline和secondline分别为lang的第一行和第二行,同理price,没有的值为None
f1=DataFrame(newdata,columns=['lang','price'])
print(f1)
结果:
lang price
firstline python 8000.0
secondline java NaN
二、**pandas读写csv文件
1.写入:
```
from pandas import DataFrame,Series
import pandas as pd
import csv
data = {"name":['google','baidu','yahoo'],"marks":[100,200,300],"price":[1,2,3]}
f1=DataFrame(data,columns=['name','price','marks'],index=['a','b','c'])
print(f1)
df=pd.DataFrame(data)
df.to_csv('pandas.csv',header=True,index=True) #header可以自定义[ ]
```
2.读取
readers=pd.read_csv('pandas.csv')
print(readers)
三、pandas读取和写入EXCLE
1.默认读取
import pandas as pd
df=pd.read_excel('test.xlsx',sheet_name='python') #默认读取第一个表
data=df.head() #默认读取前5行的数据,head(10),读取前10行
print(data)
2.指定读取单行,和多行,数据会存在列表里
df=pd.read_excel('test.xlsx')
data=df.ix[0].values #0代表第一行,没有表头
data2=df.ix[[1,2]] #不加values就是原数据结构展示,ix[1,2]代表读取第2行第3列
data3=df.ix[2,2] #读取第三行,第三列
print(data)
print(data2)
print(data3)
3.读取指定的多行多列值
df=pd.read_excel('test.xlsx')
data=df.ix[[1,2],['title','data']] #读取第2,3行的,title和data列的值
data2=df.ix[:,['title','data']] #获取所有行的 指定列
print(data)
print(data2)
print(df.columns.values) #输出所有列的值,需要自己手动敲,没有提示方法