1.1 创建一个Series,可以用列表或者一个字典,如果是列表,index值默认就是自增的id,当然也可以指定index
p = pd.Series([1,2,3,"four","5",6.0],index=["第1个","第2个","第3个","第4个","第5个","第6个"]) # print(p.index) # Index(['第1个', '第2个', '第3个', '第4个', '第5个', '第6个'], dtype='object') 是个列表可以按列表取值 # print(p.values) #[1 2 3 'four' '5' 6.0]
1.2 也可以用一个字段创建,key就是index,value就是value,字典的形式serise被包含在一个元祖内.
p1 = pd.Series({"第一个":1,"第二个":2,"第三个":3,"第四个":"four","第五个":5.0}),
2.1 数据查询
print(p[["第1个","第2个"]]) #查询多个值,返回的是series print(p["第1个"]) #查询一个值返回的就是那个值本身
1.1 创建一个DataFrame,用字典形式创建,key值变成列索引
1.2 从excel csv txt文本读取也是返回一个DataFrame对象
2.1 从DataFrame对象中读取一个Series对象
查询列
print(d1["第一列"]) print(d1[["第一列","第二列"]])
查询行
print(d1.loc[1:]) print(d1.loc[:2]) print(d1.loc[0:4]) #和python语法不同,loc是闭区间.
查询数据的方法
用读取csv,并且设置日期为首列为例
p = pd.read_csv(pth,encoding="gbk",) p.set_index("日期",inplace=True) print(p.head(10)) #数据如下
#1.1使用单个label查询数值 行或者列,传入单个值,精确匹配,得到一个值 print(p.loc["2011/3/1","天气情况"]) #>>>> 多云 #使用多个label查询数值 ,传入多个值,得到一个series print(p.loc["2011/3/1",["天气情况","最高温度"]]) ''' 天气情况 多云 最高温度 5℃ Name: 2011/3/1, dtype: object ''' # 1.2使用多个值批量查询 print(p.loc[["2011/3/1","2011/3/3"],"天气情况"]) ''' 日期 2011/3/1 多云 2011/3/3 晴 Name: 天气情况, dtype: object ''' #1.3使用值的区间查询 #行index按区间查询 print(p.loc["2011/3/1":"2011/3/3","天气情况"]) #列index按区间查询 print(p.loc["2011/3/1","最低温度":"天气情况":]) #行和列都按区间查询,返回一个DataFrame print(p.loc["2011/3/1":"2011/3/3","最低温度":"天气情况":]) #1.4使用条件表达式查询 找到天气情况为乌云的所有列表数据 print(p.loc[p["天气情况"] =="多云",:]) #多个条件用逻辑符号,每个条件用括号包裹进行过滤 print(p.loc[(p["天气情况"] =="多云") |( p["天气情况"] =="晴~多云"),:]) #1.5使用函数形式进行条件查询 print(p.loc[lambda x:(x["天气情况"] =="多云") |( x["天气情况"] =="晴~多云"),:]) #1.6使用自定义函数形式进行条件查询 #df默认index是日期,把日期强转字符串,过滤出2011年的天气晴的日期 def aa(df): return (df.index.str.startswith("2011")) & (df["天气情况"] =="晴") print(p.loc[aa, :])