从字典创建DataFrame
import pandas as pd
dict={'name':['jack','rose','tracy'],'age':[25,19,19],'city':['北京','上海','深圳']}
df=pd.DataFrame(dict)
1、数据转化成列表
df['age'].to_list()
2、打印数据表的大小和基本信息
df.shape
df.describe()
df.info()df.info()
3、更改某一列的名字
df.rename(columns={"age":"年龄"},inplace=True)
4、查看最后5行,删除某一行
df.tail(5)
#删除最后一行
df.drop(len(df)-1,inplace=True)
5、删除某一列
df.drop(columns='成交额',inplace=True)
df.pop('成交额')
del df['成交额']
6、添加新行
#添加一行新的数据
row={'name':'rose','age':'30'}
df=df.append(row,ignore_index=True)
df.append(df.iloc(i))
7、将两列数据合并
df['new']=df[]+df[]
df['new']=df[].map(str)+df[]
8、将两行数据合并
注意axis= 参数,1表示横向合并,默认纵向合并
pd.concat([df[0:1],df[-2:-1]])
#将两列数据合并,两种方法
df1= pd.DataFrame(pd.Series(np.random.randint(1, 10,20)))
df2=pd.DataFrame(random.randint(1,10)for x in range(20))
df1['2']=df2
df1.columns=['1','3']
print(df1)
df1=pd.concat([df1,df2],axis=1)
print(df1)
9、排序
#对某一列排序
df.sort_values(by=['column_name'], ascending=[True/False])
10、设置索引列
df.set_index('column_name')
11、换列的位置
使用了 pop 方法
删除 "age" 列并直接将其值赋给 temp,然后使用了 insert 方法来将 "age" 列添加回 DataFrame 的最前面
temp = df.pop('age')
df.insert(0, 'age', temp)
print(df)
根据列的序号,重新排列
list = df.columns[[x for x in range(len("age")-1,0,-1)]]
df=df[list]
print(df)
8、找出最大值,结合筛选可定位最大值所在行
print(df['age'].max())
print(df['age'].mean())
print(df['age'].min())
df=df[df['age']==df['age'].max()]
9、去除重复值
df=df.drop_duplicates('age')
10、缺失值填充,上下平均值
df['age'].fillna(df['age'].interolate)
11、 统计名字的长度,用map和lambda
df['len_str']=df['name'].map(lambda x:len(x))
print(df)
print结果:
name age city len_str
0 jack 25 北京 4
1 rose 19 上海 4
2 tracy 19 深圳 5
12、groupby() ,聚合
import pandas as pd
# 创建一个示例 DataFrame
data = {'名字': ['Alice', 'Bob', 'Alice', 'Bob', 'Charlie'],
'数值': [10, 20, 30, 40, 50]}
df = pd.DataFrame(data)
# 按 '名字' 列进行分组,并计算平均值
result = df.groupby('名字').mean()
print(result)
名字 数值
Alice 25.0
Bob 30.0
Charlie 50.0
13.pd.cut和groupby对某一列数据分类
DataFrame.cut(column, bins, right=True, labels=None, retbins=False, precision=3, duplicates='raise')
bins=[0,10,60,80]
group_name=['young','middle','old']
df['new_col']=pd.cut(df['age'],bins,labels=group_name)
or
df['new_col']=df['age'].cut(bins,labels=group_name)
14、df.loc/df.iloc/df[].at[]
#访问第三行第三列的数据
df.iloc[2,2]
df.loc[]
#访问age列第三行的数据,注意和df.iloc的对比
df['age'].at[2]
15、转化日期格式
df.iloc[1,2]=df.iloc[1.2].to_pydatetime().strftime('%m-%d')
from datetime import datetime
# 原始日期
date_str = '2020-4-26'
# 将字符串转化为日期
date = datetime.strptime(date_str, '%Y-%m-%d')
# 将日期转化为你需要的格式
formatted_date = date.strftime('%m-%d')
print(formatted_date) # 输出04-26
随机生成一个dataframe,两种写法
用np.random.randint可以赋予三个参数
df1 = pd.DataFrame(pd.Series(np.random.randint(1, 10,20)))
df2 = pd.DataFrame(random.randint(1,10)for x in range(20))
其他
df.isnull().values.any() #查找是否存在缺失值
df['age'].astype(np.float64) # 强制转化数据类型
len(df[df['age']>30]) #年龄大于30的个数,将age列大于30的构成一个新的df,统计len
df.education.value_counts() # 查看education列各个类别出现的次数
df['education'].nunique() #查看education列有几种不同的标签