备注:下文无说明时,默认df为DataFrame格式的变量
1. 新建
方法1: 字典创建(如果不指定columns,则表头会自动排序)
from pandas import DataFrame
head = ['sex', 'age', 'name']
data = {
'name':['zs','ls','ww'],
'age':[10,20,30],
'sex':['m','w','m']
}
df1 = DataFrame(data) #表头自动排序
df2 = DataFrame(data,columns=head) #固定表头
df1:
age name sex
0 10 zs m
1 20 ls w
2 30 ww m
df2:
sex age name
0 m 10 zs
1 w 20 ls
2 m 30 ww
方法2:数组创建
import numpy as np
import pandas as pd
ar = np.random.rand(9).reshape(3,3)
df1 = pd.DataFrame(ar)
print(df1)
df2 = pd.DataFrame(ar, index = ["a","b","c"], columns = ["one", "two", "three"])
print(df2)
0 1 2
0 0.646752 0.405649 0.717825
1 0.202191 0.907458 0.590119
2 0.347748 0.999144 0.329197
one two three
a 0.646752 0.405649 0.717825
b 0.202191 0.907458 0.590119
c 0.347748 0.999144 0.329197
更详细的:https://blog.youkuaiyun.com/u010199356/article/details/85697860
2. CSV文件读写
写CSV文件:
df.to_csv(file_name) #默认增加一列0~n的index标号
df.to_csv(file_name,index = False) #不带默认的index标号
读CSV文件:
df = pd.read_csv(file_name) #如果内容是数字,可能默认读成numpy类型
df = pd.read_csv(file_name, dtype=str) #如果内容是数字,可能默认读成numpy类型
3. 修改
3.1 排序
3.1.1按行翻转
df = df[::-1]
3.1.2 按特定列排序
df.sort_values(by='day')
3.1.3 按给定的列名重排序
import pandas as pd
head = ['b','a','c']
data = {
'c':[7,8,9],
'b':[4,5,6],
'a':[1,2,3]
}
df1 = pd.DataFrame(data) #表头自动排序
print(df1)
df2 = df1.reindex(columns=head) #按规定的head重排序
print(df2)
df1:
a b c
0 1 4 7
1 2 5 8
2 3 6 9
df2:
b a c
0 4 1 7
1 5 2 8
2 6 3 9
参考链接:https://www.cnblogs.com/feigebaqi/p/9800496.html
3.2 改写
3.2.1 改写column
方法1:
>>>a.columns = ['a','b','c']
>>>a
a b c
0 1 4 7
1 2 5 8
2 3 6 9
方法二:
>>>a.rename(columns={'A':'a', 'B':'b', 'C':'c'}, inplace = True)
>>>a
a b c
0 1 4 7
1 2 5 8
2 3 6 9
3.2.2 改写index
df.index = pd.Index(range(len(df))) #将乱序的df的index重新设置为[0,1]
3.2.3 增加
3.2.4 删除
删除一行
df = df.drop[index]
3.2.5 去重
interest_column = ['c1','c2']
df= df.drop_duplicates(subset=interest_column ,keep='last')
如果interest_column的值相同,则保留后面一条记录,keep='first'则保留前面一条记录
4.元素索引
4.1 索引单个元素
方法1: df.iloc[1][3] #类似于二维数组索引
方法2: df.iloc[1,2]
方法3:df.loc['行名','列名'] #根据名字获取索引值
4.2 索引行
df.head() #索引前5行数据
df.head(3) #索引前三行
获取表头名称: df.columns / df.columns.tolist()
获取行列数:df.shape
df.loc[n] #索引低n行
4.3 索引列
方法1: df['name'] #第name列
方法2: df.loc[:,'name'] #第name列
方法3: df.iloc[:,1] #第2列
4.4 索引满足特定条件的记录
data = {
'name':['zs','ls','ww','lmz'],
'age':[16,23,11,40],
'sex':[0,1,1,1]
}
df = pd.DataFrame(data)
record1 = df[df.age < 20] #单个条件筛选
record2 = df[(df.age < 20) & (df.sex == 1)] #多条件筛选
print(df)
print(record1)
print(record2)
参考链接:https://www.jianshu.com/p/a6139a1352d6