pandas
1.数据创建
series
import pandas as pd
#Series, 一维数组
a = pd.Series([9,8,7,6])
b = pd.Series([9,8,7,6],index=['a','b','c','d']) #带有索引
# 字典创建
d = pd.Series({"a":9,"b":8,"c":7})
dataframe
# DataFrame
d=pd.DataFrame(np.arange(10).reshape(2,5))
# 字典创建
dt = {"one" : np.arange(4),
"two": np.arange(5)}
# 添加一行
data = data.append(new,ignore_index=True)
# 删除某些列
data.drop('column_name', axis=1)
索引名与列名
d.index, d.columns #返回的是一个列表,数据类型为string
数据的复制
来源于https://blog.csdn.net/qq_38412868/article/details/109703731
id(data) #查看数据的存储地址
data_new = data.copy()
id(data), id(data.copy()) #可以发现是不一致的
data[data!=0]=0 #所有数据赋值为0
2. 索引
2.1设置索引
df.iloc[0], df.loc['a'] # 指定行列
df["id"]
#重新定义索引
d = d.reindex(index = ['d','c','b','a']) #行
d = d.reindex(columns = ['two','one']) #列
b.set_index(0) #设置0列,为索引
b.reset_index()
b.reset_index(drop = True) #重新设置索引
详细请参考
https://blog.csdn.net/qq_43192537/article/details/108421452
2.2排序
b.sort_index() #排序
b.sort_index(ascending=False) #降序
2.3Nan/Null
# 查看nan值存在
data.isna()
data.isnull()
data["new"].isna() #查看满足特定条件的行
3.运算
3.1逻辑运算
#查看单个元素c是否在b中,b可以是series,list, numpy
c in b
# 提取特定的行/索引
c[c["id"] != 0] #形成切片
c["new"][c["id"] != 0] #在提取特定的列
data[data.columns[0:2]] #提取前两列
下面该条来自https://www.cnblogs.com/ech2o/p/11831488.html
# 选取某个属性在指定列表中的所有行记录
df[(df['column_name'].isin(list))]
# 若选取不在列表中的行记录,加上'~'即可,即
df[~(df['column_name'].isin(list))]
3.2算术运算
算术运算必须对应索引、对应列,索引不存在、列不存在,默认为NaN。NaN值和元素加减乘除都是NaN。
b+b, a * b
b.add(a,fill_value=0) #可以将NaN替换为0
3.3统计函数
.count() #计算非NaN
.describe() #查看基本信息,返回的是一个dataframe
.cov() #协方差
.corr() #相关系数
4.数据的连接
4.1pd.concat连接
行拼接
pd.concat([df1, df2], join = "outer", sort = True) #外连接,并列进行排序
pd.concat([df1, df2], join = "inner", sort = True) #内连接
列拼接
pd.concat([df1, df2], join = "inner", axis=1, sort = False)
pd.concat([df1, df2], join = "outer", axis=1, sort = False)
4.2 merge
df1.merge(df2)
df2.merge(df1)
5.数据存储
data.to_excel('D:\\data\\post.xlsx', sheet_name = 'data') #存储为xlsx
data.to_csv('D:\\data\\post.csv', header=False, index=False) #存储为csv
data = pd.read_csv('D:\\data\\post.csv',decimal=',',
header=None, skiprows=1)
data = pd.read_excel('D:\\data\\post.csv', sheet_name = 'data')