数据分析库pandas的使用

 

 1.pandas的主要数据结构(Series,DataFrame)

  Series为一维的数据结构,类似于python的字典,包括值和索引,创建Series: (不传入索引时,默认采用0,1,2,n-1)

import pandas as pd
import numpy as np

s1 = pd.Series([15,20,30,np.NAN],index=['A','B','C','D'])
s2 = pd.Series([15,20,30,np.NAN])
print s1
print '*'*15
print s2
series

  结果如下:

D:\Python\python.exe D:/PyCharm/pandasDemo/series_dataFrame.py
A    15.0
B    20.0
C    30.0
D     NaN
dtype: float64
***************
0    15.0
1    20.0
2    30.0
3     NaN
dtype: float64

  DataFrame为二维的数组,类似于表格,包括行和列。创建DataFrame:

import pandas as pd
import numpy as np

dates = pd.date_range('20181215',periods=6)
d = pd.DataFrame(data=np.random.randn(6,4),index=dates,columns=['a','b','c','d'])  #index,行索引, columns,列
print d
DataFrame

  结果如下:(可以发现DataFrame的一列就是一个Series)

    

2,. 数据导入

  从文件导入:   

d = pd.DataFrame([('zack',18),('Tom',20),('Ned',22)],columns=['name','age'])
# print d
# d.to_excel('info.xlsx')               #保存为excel
# pd.read_excel('data.xlsx')         #读取excel
# d.to_csv('info.csv')                     #保存为csv
# print pd.read_csv('info.csv')        #读取csv文件

  从数据库导入:读取SQL语句或数据库表格,返回DataFrame

    pandas.read_sql(sql, con, index_col=None, coerce_float=True, params=None, parse_dates=None, columns=None, chunksize=None)

    pandas.read_sql_table()

    pandas.read_sql_query()

#读取mysql数据库commodity的数据
import MySQLdb
import sqlalchemy

#打开数据库
engine = sqlalchemy.create_engine("mysql+mysqldb://root@localhost/commodity?charset=utf8")

#从数据库commodity的jd_sales表载入查询结果数据
#sales 为pandas.core.frame.DataFrame对象
sales = pd.read_sql('select size1 from commodity.jd_sales',engine)

3. 数据操作

  3.1获取数据:  

#1,获取列数据:
d['a']         #获取“a”这一列的数据,返回Series对象
d[['a']]       #获取“a”这一列的数据,返回DataFrame对象
d[['a','b']]   ##获取“a”,“b”两列的数据,返回DataFrame对象
d[['a','b']].head(2)   ##获取“a”,“b”两列前两行的数据
d[['a','b']].tail(2)   ##获取“a”,“b”两列后两行的数据

#2,获取行数据
#未设置index,采用默认索引
#loc 通过索引获取行数据,索引从0开始,不能为负数
#iloc 通过索引获取行数据,索引可以为负数(和python list相同)
d.loc[4]            #获取第5行的数据,返回Series对象
d.loc[[5]]          #获取第5行的数据,返回SDataFrame对象
d.loc[[2, 4, 5]]   #获取第3, 5, 6行的数据,返回SDataFrame对象
d.iloc[-1]            #获取最后一行数据,返回Series对象

#设置了index,index=['a','b','c']
d.loc['a']            #获取'a'行的数据,返回Series对象
d.loc[['a','b']]          #获取'a','b'两行的数据,返回SDataFrame对象


#3,获取单元格数据
d.loc[2,'a']                       #获取第二行,‘b’列的数据
d.loc['20181217':'20181219',['a','b']]  #获取行索引'20181217'到'20181219,列为‘a’,‘b’的数据 d.loc[0:3,['a','b','c']         #获取第1,2,3行,‘a’,‘b’,‘c’列的数据 d.loc[:,[2, 4,6]]          # 获取第2,4,6列的数据

   3.2 分组统计数据

 

  

 

http://pandas.pydata.org/pandas-docs/stable/api.html

https://github.com/lijin-THU/notes-python

https://github.com/jayleicn/scipy-lecture-notes-zh-CN

 

posted @ 2024-09-21 14:20  silence_cho  阅读(28)  评论(0)    收藏  举报