DataFrame
DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共用同一个索引)。
DataFrame可以通过类似字典的方式或者.columnname的方式将列获取为一个Series。行也可以通过位置或名称的方式进行获取。
为不存在的列赋值会创建新列。
创建DataFrame
将一个{key:list[]}转换成DataFramekey为列名
DataFrame(data,columns = [‘col1’,‘col0’])
data形式为{key:list[]}的字典
将一个{key:list[]}转换成DataFramekey为列名
DataFrame(data,columns = [‘col1’,‘col0’])data形式为{key:list[]}的字典;columns参数-指定列的顺序
DataFrame(data,columns = [‘col1’,‘col0’,‘col2’])如果columns中传入的列名找不到,不会报错,而是产生一列 NA 值
读取文件
读取csv文件
dfcsv = pd.DataFrame(pd.read_csv("name"))
读取excel文件
dfexcel = pd.DataFrame(pd.read_excel("name"))
dfexcel = pd.read_excel(r"C:\Users\weihoo\Desktop\orders.xlsx")
需要注意的是,“\”在python里代表转义字符,它后面的会被进行转译,所以这里需要添加个“r”开头,表示它后面的字符所写即所得。
读取mysql数据库文件:需要用到sqlalchemy 和pymysql包
import pandas as pd
from sqlalchemy import create_engine
engine=create_engine("mysql+pymysql://root:123456@localhost:3306/classicmodels")
sql = "select * from customers"
dfsql = pd.read_sql(sql,engine)
root>>服务器名称
123456>>数据库服务器密码
localhost:3306>>数据库地址
classicmodels>>数据库名称
输出行数、列数
df.shape
dfexcel.shape
(326, 7)
查看数据表基本信息
dfexcel.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 326 entries, 0 to 325
Data columns (total 7 columns):
订单编码 326 non-null int64
订单日期 326 non-null datetime64[ns]
要求发货日期 326 non-null datetime64[ns]
实际发货日期 312 non-null datetime64[ns]
订单状态 326 non-null object
备注 80 non-null object
顾客编码 326 non-null int64
dtypes: datetime64[ns](3), int64(2), object(2)
memory usage: 17.9+ KB
获取表、列数据
frame
frame[‘col1’]
frame.col1
df
df.id
df.city
删除数据
del frame[‘col1’]
del frame.col1
del df.city
查看空值
df.isnull()
df["col1"].isnull()
查看唯一值
df["col1"].unique()
查看表列名
df.columns
查看前N行、后N行数据
df.head(N) #默认是10行
df.tail(N) #默认是10行
2.pandas.date_range()
语法:
pandas.date_range(start=None, end=None, periods=None, freq=‘D’,tz=None, normalize=False, name=None, closed=None)
该函数主要用于生成一个固定频率的时间索引,在调用构造方法时,必须指定start、end、periods中的两个参数值,否则报错。
主要参数说明:
start:开始日期,例如:‘20180101’,‘01/01/2018’
end:结束日期
periods:固定时期,取值为整数或None;
freq:日期偏移量,取值为string或DateOffset,默认为’D’,还有’M’,‘Q’,‘Y’
normalize:若参数为True表示将start、end参数值规范化到午夜时间20180101 00:00:00
name:生成时间索引对象的名称,取值为string或None
closed:可以理解成在closed=None情况下返回的结果中,若closed=‘left’表示在返回的结果基础上,再取左开右闭的结果,若closed='right’表示在返回的结果基础上,再取做闭右开的结果
示例:date_range = pd.date_range('20180101', periods=10, freq='D')
输出:DatetimeIndex(['2018-01-01', '2018-01-02', '2018-01-03', '2018-01-04', '2018-01-05', '2018-01-06', '2018-01-07', '2018-01-08','2018-01-09', '2018-01-10'],dtype='datetime64[ns]', freq='D')
| 参数 | 说明 |
|---|---|
| D | 天 |
| B | 工作日 |
| MS | 月第一天 |
| BMS | 月第一个工作日 |
| M | 月最后一天 |
| BM | 月最后一个工作日 |
| Q | 季度末 |
| Y | 年末 |
| H | 小时 |
| min | 分钟 |
| S | 秒 |
| W-MON、W-TUE | 每周,并指定每周从周几开始 |




