数据转dataframe
list转dataframe
方法1:先用list构造字典,再转dataframe
a=[1,2,3,4] #列表a
b=[5,6,7,8] #列表b
c={"a":a,
'b':b} #用列表a,b构造字典
data=DataFrame(c)
print(data)
方法2:对于符合列表,可以直接转成dataframe
a=[[1,2,3,4],[5,6,7,8]]#包含两个不同的子列表[1,2,3,4]和[5,6,7,8]
data=DataFrame(a)#这时原列表中的每个元素对应一条数据
print(data)
如果希望原列表中的每个元素对应dataframe中的一列,将得到的dataframe进行转置即可:
a=[[1,2,3,4],[5,6,7,8]]#包含两个不同的子列表[1,2,3,4]和[5,6,7,8]
data=DataFrame(a)#这时原列表中的每个元素对应一条数据
data=data.T
print(data)
Series转dataframe
1. to_frame()方法
a = pd.Series(['1','2','3','4'])
series
Out[57]:
0 1
1 2
2 3
3 4
aa = a.to_frame()
aa
Out[74]:
0
0 1
1 2
2 3
3 4
将Series的index也变为一列的方法
例如:month是一个series对象,它的index为日期,values为数量,下面将这两列都转换为DataFrame的columns。
import pandas as pd
dict_month = {'month':month.index,'numbers':month.values}
df_month = pd.DataFrame(dict_month)
dict转dataframe
第一种方法,直接使用pd.DataFrame()。
需要注意的是这种方法需要先将字典变为list。
>>> dict = {'a':'apple','b':'banana'}
>>> dict
{'a': 'apple', 'b': 'banana'}
>>> import pandas as pd
>>> df = pd.DataFrame([dict])
>>> df
a b
0 apple banana
最后输出的结果是以字典的keys作为columns。
import pandas as pd
data = {'name': ['nick', 'david', 'joe', 'ross'],
'age': ['5', '10', '7', '6']}
new = pd.DataFrame.from_dict(data)
new
import pandas as pd
data = [{'area': 'new-hills', 'rainfall': 100, 'temperature': 20},
{'area': 'cape-town', 'rainfall': 70, 'temperature': 25},
{'area': 'mumbai', 'rainfall': 200, 'temperature': 39 }]
df = pd.DataFrame.from_dict(data)
df
使用DataFrame的from_dict()方法。
>>> df = pd.DataFrame.from_dict(dict, orient='index',columns=['fruits'])
>>> df = df.reset_index().rename(columns = {'index':'id'})
>>> df
id fruits
0 a apple
1 b banana
>>>
将字典的keys和values分别作为了DataFrame的两列。最主要的是reset_index().rename()方法,将作为index的keys变为DataFrame中的一列
将字典转变为Series,再转为DataFrame。
>>> df = pd.DataFrame(pd.Series(dict), columns=['fruits'])
>>> df = df.reset_index().rename(columns={'index':'id'})
>>> df
id fruits
0 a apple
1 b banana
>>>
array转dataframe
import numpy as np
import pandas as pd
mat = np.random.randn(3,4)
df = pd.DataFrame(mat)
df
# Python program to Create a
# Pandas DataFrame from a Numpy
# array and specify the index column
# and column headers
# import required libraries
import pandas as pd
import numpy as np
# creating a numpy array
numpyArray = np.array([[15, 22, 43],
[33, 24, 56]])
# generating the Pandas dataframe
# from the Numpy array and specifying
# name of index and columns
panda_df = pd.DataFrame(data = numpyArray,
index = ['Row_' + str(i + 1)
for i in range(numpyArray.shape[0])],
columns = ['Column_' + str(i + 1)
for i in range(numpyArray.shape[1])])
# printing the dataframe
print(panda_df)
数据库提取的数据转为DataFrame格式
解析法
def get_df_from_db(sql):
cursor = connection.cursor()
cursor.execute(sql)
data = cursor.fetchall()
columnDes = cursor.description #获取连接对象的描述信息
columnNames = [columnDes[i][0] for i in range(len(columnDes))]
df = pd.DataFrame([list(i) for i in data],columns=columnNames)
return df
直接利用pandas读取sql
def get_df_from_db_1(sql):
return pd.read_sql(sql,connection)
其中,connection为连接数据库的参数
connection = MySQLdb.connect(host='*****'
, port=****
, db='****'
, user='****'
, passwd='****'
, charset='utf8')