数据分析库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
结果如下:
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的一列就是一个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