1.Series
1.创建:
用列表创建
pd.Series([1,2,3,4,5])
用numpy数组创建
a = np.array([1,2,3,4,5])
pd.Series(a)
用字典创建
dict_s = {"name":"彦","age":20,"sex","女"}
pd.Series(dict_s)
也可通过其他Series定义新的Series对象
arr = np.array([1,2,3,4,5])
ser1 = pd.Series(arr)
ser2 = pd.Series(ser1)
2.筛选
ser = pd.Series([1,2,3,4,5,6,7,8,9])
ser[ser>60]
3.运算
运算方式是相同index的值进行数学运算,不能运算的元素被置为NaN
4.去重
Series对象.unique()
5.计算出现的个数
Series对象.value_counts()
返回的index为该数字,value为该数字出现的次数
6.判断列表与Series的关系
ser = pd.Series([1,2,3,4,5,6])
ser.isin([2,5])
#0 False
#1 True
#2 False
#3 False
#4 True
#5 False
#dtype: bool
ps:Series中可用isnull()或者notnull()函数识别元素是否为NaN,均返回Series对象
2.DataFrame
1.创建
DataFrame构造方法中传递字典
import pandas as pd
data = {"goods":["noodles","rice","soup","toy"],"price":[22,56.5,10,15]}
df = pd.DataFrame(data)
# goods price
# 0 noodles 22.0
# 1 rice 56.5
# 2 soup 10.0
# 3 toy 15.0
可用columns限制列的个数和顺序
pd.DataFrame(data,columns=["price","goods"])
可用index更改行索引的名称
pd.DataFrame(data,index=["a","b","c","d"])
获取所有列名称 | DataFrame对象.columns |
---|---|
获取所有行名称 | DataFrame对象.index |
获取所有在DataFrame中的元素 | DataFrame对象.values |
查找某一列中储存的元素
DataFrame对象[“列名称”]或DataFrame对象.[“列名称”]
选取行
iloc属性
df对象.iloc[数字索引]
df对象.iloc[数字列表索引]
loc属性
df对象.loc[标签索引]
df对象.loc[标签列表索引]
切片
df对象[数字索引切片](包左不包右)
df对象[标签索引切片](左右都包)
获取具体值
df对象[“列名称”][“行名称索引或数字”]
给index列命名
df对象.index.name = “新值”
给columns属性命名
df对象.columns.name = “新值”
添加行:
df对象.loc[“index名”] = [“value1”,“value2”,…]
添加列:
df对象[“属性名”] = [“value1”,“value2”,…]
判断一组元素是否属于DataFrame
df对象.isin(列表)
获取
df对象[df对象.isin(列表)]
删除行:
df对象.drop([“行索引”],axis=0,inplace=True)
删除列:
df对象.drop([“列索引”],axis=1,inplace=True)
del df[“列索引”]
筛选:
筛出DataFrame中有xxx的地方
df对象[df对象==“xxx”]
转置:
df对象.T
df对象.transpose()
垂直拼接
ser1 = pd.Series([1,2,3,4,5])
ser2 = pd.Series([4,5,6,7,8])
ser1.concat(ser2,axis=0)
拼接后为一个Series对象
水平拼接
ser1.concat(ser2,axis=1)
拼接后为一个DataFrame对象
计算series中每个元素的字符串长度
ser.map(lambda x:len(x))
使series中每个元素的首字母为大写
ser.map(lambda x:x.title())