0. 背景
最近需要用到python通过读取,写入Excel数据,并画一些图。虽然以前学过一些,但是都忘得差不多了,故翻出以前学习的资料,整理在此,常用常新,也方便自己以后复习。
1. 通过pandas库在Python里写入数据到Excel,并生成本地文件(001)
代码:
import pandas as pd
df = pd.DataFrame({'ID':(1,2,3),'Name':('Tim','Victor','Nick')})
df = df.set_index('ID')
df.to_excel('D:/py学习/Python_EXCEL/output.xlsx')
print('Done!')
输出样式:
- 通过pandas库读取本地Excel文件,并直接在Python里显示(002)
代码:
import pandas as pd
Incites = pd.read_excel('D:/py学习/Python_EXCEL/Incites.xlsx')
print(Incites.shape)
print(Incites.columns)
print(Incites.head(3))
print('========================')
print(Incites.tail(3))
输出样式:
- 通过pandas库在Python里写多行多列数据的格式(不生成本地文件)(003)
代码:
import pandas as pd
s1 = pd.Series([1,2,3],index = [1,2,3],name = 'A')
s2 = pd.Series([10,20,30],index = [1,2,3],name = 'B')
s3 = pd.Series([100,200,300],index = [2,3,4],name = 'C')
df = pd.DataFrame({s1.name:s1,s2.name:s2,s3.name:s3})
print(df)
输出样式:
- 通过pandas将本地Excel中的数据排序,分类,并直接在Python里显示(007)
代码:
import pandas as pd
products = pd.read_excel('D:/py学习/Python_EXCEL/List.xlsx', index_col='ID')
products.sort_values(by=['Worthy', 'Price'], inplace=True, ascending=[True, False])
print(products)
输出样式:
- 通过pandas库在Python实现对本地Excel中数值大小范围的筛选,将直接在Python里显示(不保存到原Excel文件)(008)
初始数据:
对学生的Age(18-30)和分数(85-100)两个参数进行筛选。
代码:
import pandas as pd
def age_18_to_30(a):
return a>=18 and a30
def level_a(s):
return s>=85 and s100
students = pd.read_excel('D:/py学习/Python_EXCEL/Students.xlsx', index_col='ID')
students = students.loc[students['Age'].apply(age_18_to_30)].loc[students['Score'].apply(level_a)]
print(students)
输出样式:
- 通过pandas库读取本地Excel文件,并通过matplotlib在Python里画出柱形图(bar_chart)(009)
原数据:
将该数据画成直方图
代码:
import pandas as pd
import matplotlib.pyplot as plt
students = pd.read_excel('D:/py学习/Python_EXCEL/Res_areas.xlsx')
students.sort_values(by='Documents_number', inplace=True, ascending=False)
print(students)
plt.bar(students.Name, students.Documents_number, color='orange')
plt.xticks(students.Name, rotation='90')
plt.xlabel('Name')
plt.ylabel('Documents_number')
plt.title('Wos of Science Res_areas')
plt.tight_layout()
plt.show()
输出样式:
- 通过pandas库读取本地Excel文件,并通过matplotlib在Python里画出双柱形图(double_bar_chart)(010)
原数据:
将该数据画成双柱形图
代码:
import pandas as pd
import matplotlib.pyplot as plt
students = pd.read_excel('D:/py学习/Python_EXCEL/Res_areas_double.xlsx')
students.sort_values(by='2021', inplace=True, ascending=False)
print(students)
students.plot.bar(x='Res_areas', y=['2020', '2021'], color=['orange','r' ])
plt.title('Wos of Science Res_areas',fontsize=16,fontweight='bold')
plt.xlabel('Res_areas', fontweight='bold')
plt.ylabel('Documents_number', fontweight='bold')
ax = plt.gca()
ax.set_xticklabels(students['Res_areas'], rotation='45', ha='right')
f = plt.gcf()
f.subplots_adjust(left=0.2,bottom=0.45)
plt.show()
输出样式:
8. 通过pandas库读取本地Excel文件,并通过matplotlib在Python里画出堆叠柱形图(stacked_chart)(011)
原数据:
将该数据画成堆叠柱形图
代码:
import pandas as pd
import matplotlib.pyplot as plt
users = pd.read_excel('D:/py学习/Python_EXCEL/Users.xlsx')
users['Total'] = users['Oct'] + users['Nov'] + users['Dec']
users.sort_values(by='Total', inplace=True, ascending=True)
print(users)
users.plot.barh(x='Name', y=['Oct', 'Nov', 'Dec'], stacked=True, title='User Behavior')
plt.tight_layout()
plt.show()
输出样式:
9. 通过pandas库读取本地Excel文件,并通过matplotlib在Python里画出饼图(piechart)(012)
原数据:
将该数据画成饼图
代码:
import pandas as pd
import matplotlib.pyplot as plt
papers = pd.read_excel('D:/py学习/Python_EXCEL/papers.xlsx', index_col='国家/地区')
print(papers)
papers['2020'].plot.pie(fontsize=8, counterclock=False, startangle=-270)
plt.title('Source of Web of Science Papers', fontsize=16, fontweight='bold')
plt.ylabel('2020', fontsize=12, fontweight='bold')
plt.show()
输出样式:
10. 通过pandas库读取本地Excel文件,并通过matplotlib在Python里画出堆积图(stacked_area_chart)(013)
原数据:
; 10.1 将该数据画成堆积图
代码:
import pandas as pd
import matplotlib.pyplot as plt
years = pd.read_excel('D:/py学习/Python_EXCEL/Years.xlsx', index_col='Year')
print(years)
print(years.columns)
years.plot.area(y=['USA', 'China', 'UK'])
plt.title('Source of Country', fontsize=16, fontweight='bold')
plt.ylabel('Number of Papers', fontsize=12, fontweight='bold')
plt.xticks(years.index, fontsize=8, rotation='45', ha='right')
plt.show()
输出样式:
10.1 将该数据画成折线图(区别只在代码第8行plot少了.area)
代码:
import pandas as pd
import matplotlib.pyplot as plt
years = pd.read_excel('D:/py学习/Python_EXCEL/Years.xlsx', index_col='Year')
print(years)
print(years.columns)
years.plot.area(y=['USA', 'China', 'UK'])
plt.title('Source of Country', fontsize=16, fontweight='bold')
plt.ylabel('Number of Papers', fontsize=12, fontweight='bold')
plt.xticks(years.index, fontsize=8, rotation='45', ha='right')
plt.show()
输出样式:
11. 通过pandas库读取本地Excel文件,并通过matplotlib在Python里画出散点图(Bar_chart)(011)
原数据:
将该数据第二三列前五行画成散点图
代码:
import pandas as pd
import matplotlib.pyplot as plt
pd.options.display.max_columns = 777
names = pd.read_excel('C:/Users/WJ/Desktop/Python_EXCEL/Names.xlsx')
print(names.head())
names.plot.scatter(x='Documents', y='Times_cited')
plt.show()
输出样式:
12. 通过pandas库读取本地Excel文件,并通过matplotlib在Python里画出直方图(Histogram)(015)
注:关于直方图和柱形图的差别如下:
直方图一般用来描述等距数据或等比数据;柱形图一般用来描述称名数据或顺序数据。. 直观上,直方图矩形之间是衔接在一起的,表示数据间的数学关系;柱形图则留有空隙,表示仅作为两个或多个不同的类,而不具有数学相关性质。
原数据:
将该数据第二三列前五行画成直方图
代码:
import pandas as pd
import matplotlib.pyplot as plt
pd.options.display.max_columns = 777
names = pd.read_excel('D:/py学习/Python_EXCEL/Names.xlsx')
print(names.head())
names.Times_cited.plot.hist(bins=100)
plt.xticks(range(0, max(names.Times_cited), 500), fontsize=8, rotation=90)
print(names.corr())
plt.tight_layout()
plt.show()
输出样式:
13. 通过pandas库读取本地Excel文件,并在Python将其转置输出(021)
原数据:
将该数据第二三列前五行画成散点图
代码:
import pandas as pd
pd.options.display.max_columns=999
videos = pd.read_excel('D:/py学习/Python_EXCEL/Videos.xlsx', index_col='Month')
table = videos.transpose()
print(table)
输出样式:
14. 通过pandas库读取本地csv格式文件,并在Python将其输出(022)
原数据:
代码:
import pandas as pd
pd.options.display.max_columns=999
students1 = pd.read_csv('D:/py学习/Python_EXCEL/Incites_Pulication.csv')
print(students1)
输出样式:
15. 通过pandas库读取本地csv格式文件,并在Python将其输出(022)
原数据:
代码:
import pandas as pd
pd.options.display.max_columns=999
students2 = pd.read_csv('D:/py学习/Python_EXCEL/info.txt')
print(students2)
输出样式:
15. 通过pandas库读取本地csv格式文件,再通过scipy库对数据进行线性回归分析,并用matplotlib在Python将其输出(022)
原数据:
代码:
import pandas as pd
import matplotlib.pyplot as plt
from scipy.stats import linregress
num = pd.read_excel('D:/py学习/Python_EXCEL/Trendency.xlsx')
print(num)
slope, intercept, r, p, std_err=linregress(num.Year, num.USA)
exp = num.Year*slope+intercept
plt.scatter(num.Year, num.USA)
plt.plot(num.Year, exp, color='orange')
plt.title(f"y={slope}*x+{intercept}")
plt.xticks(num.Year, rotation=90)
plt.tight_layout()
plt.show()
print(slope*35+intercept)
输出样式:
Original: https://blog.csdn.net/weixin_46915208/article/details/124061914
Author: 学吧 学无止境
Title: 使用Python对xlsx,csv, txt格式文件进行读、写并绘图
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/675669/
转载文章受原作者版权保护。转载请注明原作者出处!